【问题标题】:How to add base URI in RestTemplate如何在 RestTemplate 中添加基本 URI
【发布时间】:2017-06-21 19:33:11
【问题描述】:

除了使用基本 URI 来初始化 RestTemplate 之外,还有其他方法吗? 扩展 RestTemplate 并覆盖执行方法。目前我有如下代码。谢谢

class CustomRestTemplate extends RestTemplate {
String baseUrl

@Override
protected  T doExecute(URI url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor responseExtractor) throws RestClientException {
    return super.doExecute(new URI(baseUrl + url.toString()), method, requestCallback, responseExtractor)
}

【问题讨论】:

    标签: spring resttemplate


    【解决方案1】:

    春季 5.0:

    这会向http://localhost:8080/myservice发送一个GET请求

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory("http://localhost:8080"));
    restTemplate.getForObject("/myservice", String.class);
    

    【讨论】:

      【解决方案2】:

      如果你使用的是Spring Boot,可以使用org.springframework.boot.web.client.RestTemplateBuilder.rootUri(baseUrl).build()

      【讨论】:

      • 当您尝试使用 Spring 的 @Value 更新 baseUrl 字符串时,它似乎不起作用
      【解决方案3】:

      您可以创建您的自定义DefaultUriTemplateHandler

      DefaultUriTemplateHandler defaultUriTemplateHandler = new DefaultUriTemplateHandler();
      defaultUriTemplateHandler.setBaseUrl(url);
      

      然后添加到restTemplate

      return new RestTemplateBuilder()
            .uriTemplateHandler(defaultUriTemplateHandler)
            .build();
      

      【讨论】:

      • DefaultUriTemplateHandler 自 5.0 起已弃用,取而代之的是 DefaultUriBuilderFactory。所以我们应该避免使用它。
      【解决方案4】:

      Spring 的 RestTemplate(版本 4.2.0.RELEASE)支持名为 setUriTemplateHandler 的方法。如果从未设置,则它包含 DefaultUriTemplateHandler

      DefaultUriTemplateHandler 支持名为 'setBaseUrl` 的方法

      因此,您可以在此处设置基本 URL。

      【讨论】:

        【解决方案5】:

        AFAIK 除了您上面列出的以外,别无他法

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-09
          • 2019-07-18
          • 1970-01-01
          相关资源
          最近更新 更多