是否还有其他方法可以使用基本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)
}
答案 0 :(得分:22)
Spring 5.0:
这会向http://localhost:8080/myservice
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除了上面列出的内容之外别无选择