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的超全讲解(全)转的更多相关文章

  1. 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解

    文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...

  2. 在jquery中,全选/全不选的表示方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. JS checkbox 全选 全不选

    /* JS checkbox 全选 全不选 Html中checkbox: <input type="checkbox" name="cbx" value= ...

  4. checkbox实现全选全不选

    1.jQuery实现checkbox全选全不选 <!DOCTYPE html> <head runat="server"> <title>jQu ...

  5. jquery 全选 全不选 反选

    1.概述 在项目中经常遇到列表中对复选框进行勾选操作,全选...反选.. 2. example <html> <body> <form id="test-for ...

  6. 利用jQuery实现CheckBox全选/全不选/反选

    转自:http://www.cnblogs.com/linjiqin/p/3148259.html jQuery有些版本中实现CheckBox全选/全不选/反选会有bug,经测试jquery-1.3. ...

  7. jquery的全选/全不选/反选以及attr添加checked属性失败的解决办法

    如下图: <head> <title></title> <style type="text/css"> div { border: ...

  8. Jq 遍历 全选 全不选 反选

    //全选 全不选 $('#checkAll').click(function () { //判断是否被选中 var bischecked = $('#checkAll').is(':checked') ...

  9. js之checkbox的代码全选/全不选,使用id获取元素,而不是name

    每当有多个选项的时候,都会有一种想法是:全选,全不选,如果子选项有被选,父选项也得被选. 注意:这里是根据id来获取元素的,但是不能直接用getElementById,因为那只能返回一个,而不是集合. ...

  10. jquery之全选全不选

    <input type="checkbox" onclick="selall(this)" />全选/全不选 <input type=&quo ...

随机推荐

  1. Oracle 表空间常用操作

    aliases: [Oracle表空间] tags:      [数据库,Oracle,Blog] summary: [Oracle表空间常用操作,包括查询.分析.扩容.删除.优化等] date:   ...

  2. js/jq 点击按钮显示div,点击页面其他任何地方隐藏div

    1.HTML页面 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  3. <一>关于运算符重载

    C++的运算符重载:使对象的运算表现得和编译器内置类型一样 如下代码,如果T是整形,那很好理解,但是如果 T 是一个 Student 类, a + b ?怎么操作,两个学生类怎么相加? 这个就是我们要 ...

  4. 模块/collections/random/time/datetime

    内容概要 模块--包的具体使用 编程思想介绍 软件开发--目录规范 常用模块介绍--collections模块 常用模块介绍--time.datetime 常用模块介绍--random 1.包的具体使 ...

  5. python实现AES加密解密

    1. 前言 AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个. 之前写过一片关于python AES加密解密的文章,但是这里面细节实在很多,这次我从 参数类型.加密模式.编码模式.补全 ...

  6. ArcGIS API for JS 访问浏览器提示不安全链接的服务时 如何设置

    当我们通过ArcGISServer发布了服务后,首先要在要访问的计算机上通过浏览器访问下服务是否可用.但有时候会出现不安全的标识. 如果这样的链接直接放到代码中,可能会加载失败. 代码如下. var ...

  7. JavaScript入门②-函数(1)基础{浅出}

    01.JS函数基础 1.1.函数定义 函数(方法)就是一段定义好的逻辑代码,函数本身也是一个object引用对象.三种函数构造方式: ① 函数申明:function 函数名(参数){代码},申明函数有 ...

  8. 为什么总是应该考虑给定 List 的初始大小

    在 .Net 技术中,使用 List<> 来存储数据是很常见的.List<> 是一个可以动态增长的泛型集合类型,可以存储任何类型的数据. 但是,在实际使用中,很多人并不注意给定 ...

  9. python安装与初识

    一.Linux基础 - 计算机以及日后我们开发的程序防止的服务器的简单操作 二.Python开发 http://www.cnblogs.com/wupeiqi/articles/5433893.htm ...

  10. 8000字详解Thread Pool Executor

    摘要:Java是如何实现和管理线程池的? 本文分享自华为云社区<JUC线程池: ThreadPoolExecutor详解>,作者:龙哥手记 . 带着大厂的面试问题去理解 提示 请带着这些问 ...