如何在RestTemplate中添加基URI

时间:2017-06-21 19:33:12

标签: spring resttemplate

是否还有其他方法可以使用基本URI来初始化RestTemplate 扩展RestTemplate并覆盖execute方法。目前我有如下代码。谢谢

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)
}

5 个答案:

答案 0 :(得分:22)

Spring 5.0:

这会向http://localhost:8080/myservice

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

答案 1 :(得分:7)

您可以创建自定义DefaultUriTemplateHandler

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

然后将其添加到restTemplate

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

答案 2 :(得分:5)

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

答案 3 :(得分:0)

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

DefaultUriTemplateHandler支持名为' setBaseUrl`

的方法

因此,您可以在那里设置基本网址。

答案 4 :(得分:-4)

AFAIK除了上面列出的内容之外别无选择