简化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的资料请关注脚本之家其它相关文章!
相关文章
spring NamedContextFactory在Fegin配置及使用详解
在我们日常项目中,使用FeignClient实现各系统接口调用变得更加简单, 在各个系统集成过程中,难免会遇到某些系统的Client需要特殊的配置、返回读取等需求。Feign使用NamedContextFactory来为每个Client模块构造单独的上下文(ApplicationContext)2023-11-11Java中的BufferedInputStream与BufferedOutputStream使用示例
BufferedInputStream和BufferedOutputStream分别继承于FilterInputStream和FilterOutputStream,代表着缓冲区的输入输出,这里我们就来看一下Java中的BufferedInputStream与BufferedOutputStream使用示例:2016-06-06只需两步实现Eclipse+Maven快速构建第一个Spring Boot项目
这篇文章主要介绍了只需两步实现Eclipse+Maven快速构建第一个Spring Boot项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-12-12spring boot使用WebClient调用HTTP服务代码示例
这篇文章主要介绍了spring boot使用WebClient调用HTTP服务代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-12-12
最新评论