RestTemplate的超全讲解(全)转
RestTemplate的超全讲解(全)转
https://blog.csdn.net/weixin_47872288/article/details/121842374
(81条消息) RestTemplate的超全讲解(全)_码农研究僧的博客-CSDN博客_resttemplate
视频地址:
https://www.bilibili.com/video/BV1tJ41147uj?t=624.5&p=4
post与get的区别在于post的方法传参map必须是MultiValueMap
基本类型传参和实体类型传参
@RestController
public class UserController{
//实体传参
@RequestMapping(value="/addUser1")
public UserDTO addUser(userDTO userdto)
{
return userdto;
} @ResquestMapping(value="/addUser2")
public UserDTO addUser2(Long userId,String userName)
{
UserDTO u=new UserDTO();
u.setUserId(userId);
u.setUserName(userName);
return u;
} }
Post 请求方式调用服务接口
//http://localhost:8080/postFor0bject1
@GetMapping("/postForObject1")
public UserDT0 postForObject1 ( ) {
//远程访问的Url UserDTO
String url = "http://localhost:8080/addUser1";
// Post方法必须使用MultiValueMap传参。//使用UserDTO传参也可以 MultiValueMap<String,0bject> paramMap = new LinkedMultiValueMap<>();
paramMap.add ("userId", 1008L);
paramMap.add ("userName ","巧克力");
UserDT0 userDTO = restTemplate.postForObject(url,paramMap,UserDT0.class);
return userDTO;
}
如果服务接口使用到@RequestBody,用httpentity ,此时不能使用MultiValueMap 传参!!
@RequestMapping( value = "/addUser3" )
public UserDT0 addUser3(@RequestBody UserDT0 userDTO) {
userDTo.setUserName(userDTo.getUserName() + " from RequestBody" );
return userDTO;
}
//http://localhost:8888/postForObject2
@GetMapping("/postForObject2")
public UserDT0 postForObject2( ) {
//申明一个请求头
HttpHeaders headers = new HttpHeaders();
//application/json
headers.setContentType( MediaType .APPLICATION_JSON);//远程访问的Url UserDTO
string url = "http://localhost:8080/addUser3";
/**
此处使用MultiValueMap会报错
MultiValueMap<String,0bject> paramMap = new LinkedMultiValueMap<>( );
paramMap.add("userId",100OL) ;
paramMap.add("userName","fencaibc");*/
//此处可以使用HashMap代替,但是会有警告 UserDT0 userDTO = new UserDTO( );
userDTO.setUserId( 1088L);
userDT0.setUserName("课程");
HttpEntity<UserDTO> entityParam new HttpEntity<UserDTO>(userDTO,headers) ;
UserDT0 result = restTemplate.postFor0bject(url, entityParam,UserDTO.class);
return result ;
}

PostForEntity 方法 返回内容比 postForObject 更丰富,但是要注意,基本类型的参数采用 MultiValueMap封装参数,@ReqeustBody 修饰的参数 要以httpEntity 封装对象实例作为参数
同时,返回结果要是 ResponseEntity类型
//http://localhost:8088/ postForEntity1@GetMapping( " / postForEntity1")
public UserDT0 postForEntity1( ) {
string url = "http://localhost:8080/addUser1" ; MultiValueMap<String,object> paramMap = new LinkedMultiValueMap<>( ); paramMap.add("userId", 100);
paramMap.add("userName" ,"课程"); ResponseEntity<UserDT0> userDTOResponseEntity =restTemplate.postForEntity(url,paramMap,UserDTO.class) ; HttpStatus statusCode = userDTOResponseEntity.getStatusCode( ); int statusCodeValue = userDTOResponseEntity.getStatusCodeValue( ); HttpHeaders headers = userDTOResponseEntity. getHeaders( ); return userDTOResponseEntity. getBody( );
}
效果

RestTemplate的超全讲解(全)转的更多相关文章
- 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解
文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...
- 在jquery中,全选/全不选的表示方法
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- JS checkbox 全选 全不选
/* JS checkbox 全选 全不选 Html中checkbox: <input type="checkbox" name="cbx" value= ...
- checkbox实现全选全不选
1.jQuery实现checkbox全选全不选 <!DOCTYPE html> <head runat="server"> <title>jQu ...
- jquery 全选 全不选 反选
1.概述 在项目中经常遇到列表中对复选框进行勾选操作,全选...反选.. 2. example <html> <body> <form id="test-for ...
- 利用jQuery实现CheckBox全选/全不选/反选
转自:http://www.cnblogs.com/linjiqin/p/3148259.html jQuery有些版本中实现CheckBox全选/全不选/反选会有bug,经测试jquery-1.3. ...
- jquery的全选/全不选/反选以及attr添加checked属性失败的解决办法
如下图: <head> <title></title> <style type="text/css"> div { border: ...
- Jq 遍历 全选 全不选 反选
//全选 全不选 $('#checkAll').click(function () { //判断是否被选中 var bischecked = $('#checkAll').is(':checked') ...
- js之checkbox的代码全选/全不选,使用id获取元素,而不是name
每当有多个选项的时候,都会有一种想法是:全选,全不选,如果子选项有被选,父选项也得被选. 注意:这里是根据id来获取元素的,但是不能直接用getElementById,因为那只能返回一个,而不是集合. ...
- jquery之全选全不选
<input type="checkbox" onclick="selall(this)" />全选/全不选 <input type=&quo ...
随机推荐
- TDSQL-C 真·秒级启停:连接断了,又没断
你听过多少款无服务器架构(Serverless)数据库? 什么是Serverless呢?简单理解,Serverless 分为 FaaS 和 BaaS 两个部分,其中 FaaS 指的是函数即服务,Baa ...
- 【CVE-2022-0543】Redis Lua沙盒绕过命令执行复现
免责声明: 本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担,产生的一切风险与本文作者无关,如继续阅读该文章即表明您默认遵守该内容 ...
- gRPC(Java) keepAlive机制研究
基于java gRPC 1.24.2 分析 结论 gRPC keepAlive是grpc框架在应用层面连接保活的一种措施.即当grpc连接上没有业务数据时,是否发送pingpong,以保持连接活跃性, ...
- phpexcel 小技巧
//设置填充的样式和背景色$objPHPExcel->getActiveSheet()->getStyle( 'A1:AU1')->getFill()->setFillType ...
- 7 STL-deque
重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦! 生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...
- beanshell报错:Error invoking bsh method: eval解决办法(beanshell 不支持Java中的泛型)
起因:在beanshell中读取CSV文件中的内容,相同的代码在IDEA中可以执行通过,但是在beanshell中报错: ERROR o.a.j.u.BeanShellInterpreter: Err ...
- 乐维监控与Zabbix对比分析(一)——架构、性能
近年来,Zabbix凭借其近乎无所不能的监控及优越的性能一路高歌猛进,在开源监控领域独占鳌头:而作为后起的新锐监控平台--乐维监控,则不断吸收Zabbix,Prometheus等优秀开源平台的优点,兼 ...
- TransmittableThreadLocal和@Async优雅的记录操作日志
此文主要讲解: 如何实现操作记录 如何将TransmittableThreadLocal和@Async搭配使用 TransmittableThreadLocal阿里的一个开源组件,为了在使用线程池等会 ...
- Qt开发Active控件:如何使用ActiveQt Server开发大型软件的主框架(2)
Qt开发Active控件:如何使用ActiveQt Server开发大型软件的主框架 注:本文更多地是带着如何去思考答案,而不是纯粹的放一个答案上来,如果你需要直接看到完整的答案,请直接看实例和最后的 ...
- VS2019发布至远程IIS部署流程
服务器部署 传统的开发将项目发布至本地桌面之后,复制至站点目录或通过FTP上传站点目录,有点小麻烦,通过开发工具VS2019本身集成的功能,可以一步到发布到远程IIS站点. 条件: VS系列发工具,例 ...