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