如何在RestTemplate中添加基URI

Ami*_*ain 14 spring resttemplate

除了扩展RestTemplate和覆盖execute方法之外,还有其他方法可以使用基URI初始化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)
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*fek 28

春季5.0:

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

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


Som*_*omu 10

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


deh*_*asi 9

您可以创建自定义 DefaultUriTemplateHandler

DefaultUriTemplateHandler defaultUriTemplateHandler = new DefaultUriTemplateHandler();
defaultUriTemplateHandler.setBaseUrl(url);
Run Code Online (Sandbox Code Playgroud)

然后将其添加到 restTemplate

return new RestTemplateBuilder()
      .uriTemplateHandler(defaultUriTemplateHandler)
      .build();
Run Code Online (Sandbox Code Playgroud)

  • 从 5.0 开始,DefaultUriTemplateHandler 已被弃用,取而代之的是 DefaultUriBuilderFactory。所以我们应该避免使用它。 (3认同)

小智 -7

AFAIK 除了上面列出的之外没有其他办法