没有合适的资源?快使用搜索试试~ 我知道了~
SpringBoot系列之RestTemplate使用示例
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 4 浏览量
2022-06-12
18:54:50
上传
评论 1
收藏 401KB PDF 举报
温馨提示
试读
22页
SpringBoot系列之RestTemplate使用示例,博主之前经常对接一些接口,所以发现写一些http请求比较麻烦,学习springboot的过程知道可以用 RestTemplate来做http请求,RestTemplate 是 Spring Framework 框架封装的基于模板方法设计模式的一个工具类,带有同步模板方法 API 的原始 Spring REST 客户端类,下面博主分析一些对接过程的一些经验
资源推荐
资源详情
资源评论
博主之前经常对接一些接口,所以发现写一些http请求比较麻烦,学习springboot的过程知道可以用 RestTemplate
来做http请求, RestTemplate 是 Spring Framework 框架封装的基于模板方法设计模式的一个工具类,带有同步模
板方法 API 的原始 Spring REST 客户端类,下面博主分析一些对接过程的一些经验,RestTemplate基本使用可以参
考官网文档:https://docs.spring.io/spring-framework/docs/5.1.6.RELEASE/spring-framework-
reference/integration.html#rest-client-access
下面分析一些例子,先要进行环境准备:
开发环境
JDK 1.8
SpringBoot2.2.1
Maven 3.2+
开发工具
IntelliJ IDEA
smartGit
Navicat15
在IDEA里集成阿里的 https://start.aliyun.com ,创建一个 Spring Initializr 项目:
选择jdk版本,和maven打包方式
选择需要的 dependencies
项目建好之后,可以对RestTemplate进行一些自定义的设置,比如可以拓展一下 ClientHttpRequestInterceptor ,做
一些自己的拦截,打印一些日志
package com.example.resttemplate.conguration;
import cn.hutool.core.convert.Convert;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import java.io.IOException;
@Slf4j
public class CustomClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] bytes, ClientHttpRequestExecution
clientHttpRequestExecution) throws IOException {
trackRequest(httpRequest , bytes);
ClientHttpResponse httpResponse = clientHttpRequestExecution.execute(httpRequest , bytes);
trackResponse(httpResponse);
return httpResponse;
}
private void trackRequest(HttpRequest httpRequest, byte[] bytes) {
log.info("=======================request
自定义 RestTemplateCustomizer 类:
写一个RestTemplate的配置类,注意需要加上 RestTemplate 的 @Bean ,我们在项目里才能使用 @Autowired
RestTemplate restTemplate; 直接调用, @DependsOn 是一个Spring框架底层的注解,会禁用 RestTemplate 默认的
RestTemplateBuilder 类,可以不加上
start=================================================");
log.info("Headers : {}", httpRequest.getHeaders());
log.info("Request URI : {}", httpRequest.getURI());
log.info("Request Method : {}", httpRequest.getMethod());
log.info("Request Body : {}" , Convert.toStr(bytes));
log.info("=======================request
end=================================================");
}
private void trackResponse(ClientHttpResponse httpResponse) throws IOException {
log.info("=======================response
start=================================================");
log.info("Status code : {}", httpResponse.getStatusCode());
log.info("Status text : {}", httpResponse.getStatusText());
log.info("Headers : {}", httpResponse.getHeaders());
log.info("=======================response
end=================================================");
}
}
package com.example.resttemplate.conguration;
import org.springframework.boot.web.client.RestTemplateCustomizer;
import org.springframework.web.client.RestTemplate;
public class CustomRestTemplateCustomizer implements RestTemplateCustomizer {
@Override
public void customize(RestTemplate restTemplate) {
restTemplate.getInterceptors().add(new CustomClientHttpRequestInterceptor());
}
}
package com.example.resttemplate.conguration;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conguration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.http.client.ClientHttpRequestFactory;
下面给出一个简单的例子,先写一个用户dto类:
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Conguration
public class RestTemplateConguration {
@Bean
public CustomRestTemplateCustomizer customRestTemplateCustomizer() {
return new CustomRestTemplateCustomizer();
}
@Bean
@DependsOn(value = {"customRestTemplateCustomizer"})
public RestTemplateBuilder restTemplateBuilder() {
return new RestTemplateBuilder(customRestTemplateCustomizer());
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
//单位为ms
factory.setReadTimeout(5000);
//单位为ms
factory.setConnectTimeout(5000);
return factory;
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder ,ClientHttpRequestFactory factory ) {
RestTemplate restTemplate = builder.build();
restTemplate.setRequestFactory(factory);
return restTemplate;
}
}
package com.example.resttemplate.model;
import lombok.Data;
@Data
public class UserDto {
private Integer id;
private String login;
private String name;
private String company;
private String location;
private String email;
剩余21页未读,继续阅读
资源评论
- 程序员小房2023-01-19资源内容详尽,对我有使用价值,谢谢资源主的分享。
- 张牧之的兄弟马走日2022-10-17这个资源对我启发很大,受益匪浅,学到了很多,谢谢分享~
smileNicky
- 粉丝: 2w+
- 资源: 406
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功