天天看點

飛5的Spring Boot2(34)- RestTemplate

調用REST服務RestTemplate

如果應用需要調用遠端REST服務,你可以使用Spring架構的RestTemplate類。由于RestTemplate執行個體經常在使用前需要自定義,Spring Boot就沒有提供任何自動配置的RestTemplate bean,不過你可以通過自動配置的RestTemplateBuilder建立自己需要的RestTemplate執行個體。自動配置的RestTemplateBuilder會確定應用到RestTemplate執行個體的HttpMessageConverters是合适的。

飛5的Spring Boot2(34)- RestTemplate

以下是典型的示例:

1@Service
 2public class MyBean {
 3private final RestTemplate restTemplate;
 4public MyBean(RestTemplateBuilder restTemplateBuilder) {
 5this.restTemplate = restTemplateBuilder.build();
 6}
 7public Details someRestCall(String name) {
 8return this.restTemplate.getForObject("/{name}/details", Details.class, name);
 9}
10}      

注意

RestTemplateBuilder包含很多有用的方法,可以用于快速配置一個RestTemplate。例如,你可以使用builder.basicAuthorization(“user”, “password”).build()添加基本的認證支援(BASIC auth)。

定義RestTemplate

1static class ProxyCustomizer implements RestTemplateCustomizer {
 2@Override
 3public void customize(RestTemplate restTemplate) {
 4HttpHost proxy = new HttpHost("proxy.example.com");
 5HttpClient httpClient = HttpClientBuilder.create()
 6.setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {
 7@Override
 8public HttpHost determineProxy(HttpHost target,
 9HttpRequest request, HttpContext context)
10throws HttpException {
11if (target.getHostName().equals("192.168.0.5")) {
12return null;
13}
14return super.determineProxy(target, request, context);
15}
16}).build();
17restTemplate.setRequestFactory(
18new HttpComponentsClientHttpRequestFactory(httpClient));
19}
20}