java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > RestTemplate HttpClient OkHttp

简化API提升开发效率RestTemplate与HttpClient OkHttp关系详解

作者:wei4118268

这篇文章主要为大家介绍了简化API,提升开发效率,RestTemplate与HttpClient OkHttp关系介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1. 什么是RestTemplate

RestTemplate是Spring提供的用于访问Rest服务的客户端。

2. RestTemplate与HttpClient、OkHttp等的关系

RestTemplate是在其他HTTP客户端库基础上的再次封装。相对于其他库,RestTemplate提供了更加简单易用的API,降低了上手和使用成本,提升开发效率。

3. 配置RestTemplate

3.1. 引入依赖

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
</dependency>

RestTemplate默认使用JDK的HttpURLConnection作为底层HTTP客户端的实现。

如果要使用其他HTTP客户端库,请自行引入依赖。

3.2. 初始化为Bean

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }
    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(5000);
        factory.setConnectTimeout(10000);
        return factory;
    }
}

4. 常用API

4.1 Get请求

//该方法仅返回HTTP协议的响应体,如果你只关注返回的内容,用这个方法即可
public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables );
//该方法返回ResponseEntity,包含了整个HTTP响应
public <T> org.springframework.http.ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables );
public <T> org.springframework.http.ResponseEntity<T> getForEntity(String url, Class<T> responseType, java.util.Map<String, ?> uriVariables );

4.2 Post请求

Post请求的API与Get请求的API相对应,功能上相类似。

//该方法仅返回HTTP协议的响应体,如果你只关注返回的内容,用这个方法即可
public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables );
//该方法返回ResponseEntity,包含了整个HTTP响应
public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables );
public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, java.util.Map<String, ?> uriVariables );

4.3 exchange方法

//通用API
public <T> org.springframework.http.ResponseEntity<T> exchange(String url, org.springframework.http.HttpMethod method, @Nullable org.springframework.http.HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables );
public <T> org.springframework.http.ResponseEntity<T> exchange(String url, org.springframework.http.HttpMethod method, @Nullable org.springframework.http.HttpEntity<?> requestEntity, Class<T> responseType, java.util.Map<String, ?> uriVariables );

4.4 一些示例

String res = restTemplate.getForObject(sb.toString(), String.class);
Map result = JSON.parseObject(res, Map.class);
String res = restTemplate.postForObject(url, requestBody, String.class);
Map result = JSON.parseObject(res, Map.class);
//可以用来下载图片
HttpEntity httpEntity = new HttpEntity<>(requestBody);
ResponseEntity<byte[]> responseEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, byte[].class);
byte[] buffer = responseEntity.getBody();

以上就是RestTemplate与HttpClient OkHttp关系简化API提升开发效率的详细内容,更多关于RestTemplate HttpClient OkHttp的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文