RestTemplate用法
2023-03-07 09:16:03 时间
- RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute。RestTemplate 继承自 InterceptingHttpAccessor 并且实现了 RestOperations 接口,其中 RestOperations 接口定义了基本的 RESTful 操作,这些操作在 RestTemplate 中都得到了实现。
使用
- 新建 config.ApplicationContextConfig.java
@Configuration
public class ApplicationContextConfig {
@Bean // applicationContext.xml <bean id="" class="">
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
- 使用
@Resource
private RestTemplate restTemplate;
@GetMapping(value = "/consumer/payment/create")
public CommonResult<Payment> create(Payment payment) {
return restTemplate.postForObject(“http://localhost:8080” + "/payment/get/" + id, payment, CommonResult.class);
// (url, requestMap, ResponseBean.class) 这三个参数分别代表
// REST请求地址、请求参数、HTTP响应被转换成的对象类型
// 支持的方法很多,不一一列举了
}
@GetMapping(value = "/consumer/payment/getForEntity/{id}")
public CommonResult getpaymentlist2(@PathVariable("id") Long id) {
ResponseEntity<CommonResult> entity = restTemplate.getForEntity(PAYMENT_URL + "/payment/get/" + id, CommonResult.class);
if (entity.getStatusCode().is2xxSuccessful()){
// log.info(entity.getHeaders());
return entity.getBody();
}else {
return new CommonResult(444,"查询失败");
}
}
- 添加请求头和body
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
private static String formUpload(){
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("token","123");
httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 封装参数,千万不要替换为Map与HashMap,否则参数无法传递
MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap<>();
multiValueMap.add("api_key", API_KEY);
multiValueMap.add("api_secret", API_SECRET);
HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(multiValueMap, httpHeaders);
return restTemplate.postForObject(serverUrl, httpEntity, String.class);
}
相关文章
- 如何灵活的更改微服务容器运行时的堆内存大小及环境变量
- 错得离谱!竟然说pandas中的join比merge快5倍?我带你看源码吧
- R笔记练习1
- pandas作者当年遇到了什么麻烦,才设计出如此糟糕的警告机制
- pandas中使用excel的模糊匹配通配符,真香
- FreeBuf周报 | 乌克兰IT军关闭了俄罗斯第二大银行;三菱电机PLC曝多个严重安全漏洞
- 要钱还是要命?医院遭勒索攻击暂停手术,转移重症患者
- Kubernetes 运维遇到的问题记录(2)
- 微软提醒欧洲:这个冬天做好与俄罗斯网络战的准备
- Vice Society 勒索软件太猖狂,一年内袭击 33 个教育机构
- Golang的逃逸分析和C以及Rust的此类问题的处理对比
- Neton:一款功能强大的沙盒信息收集工具
- 思科爆出严重漏洞,更新补丁明年一月才能发布!
- scscanner:一款功能强大的大规模状态码扫描工具
- 如何使用Legitify保护你的GitHub组织资产安全
- 美国加州财政部遭勒索攻击,专家称不清楚黑客如何入侵
- 智慧物流:ZETag云标签入选“中国物联网行业创新产品”榜单
- Linux持久化实操
- 国际乒联泄露马龙和樊振东的信息
- 【ES三周年】Informer实战之持久化K8s事件至ElasticSearch