2021-05-15

springMvc/springBoot/springCloud接受json对象作为传入参数注意点

首先先看一下post请求的不同的请求格式

1.post请求的一般请求格式,requestBody的内容

post请求的普通编码格式.png

2.post请求的带文件的请求格式,requestBody的内容

post请求的文件传输.png

3.post请求的json格式,requestBody的内容

post请求的json格式.png

1.传入的参数是单个对象的json ,直接用@RequestBody对象 对象变量接收

2.传入的是两个对象的话,有以下4种情况

2.1 一个对象变量前面用@RequestBody,另一个没有

image.png

此时前端传过来的json参数如下:


image.png

后端接收到的结果如下:


image.png

结论:两个对象都不会封装进参数,原因是加了@RequestBody的参数会去读取requestBody,然后把大的包括两个对象的json对象封装进LoginUser,并不是对请求体中的loginUser对象进行封装,所以LoginUser这个对象里面什么都没有封装上,ModelVo因为不是读取requestBody中的json对象,所以也什么都没有

2.2 两个接收参数对象都没有加@RequestBody

image.png

结论:格式不一样,所以也不会拿到数据

2.3两个接收参数对象都加@RequestBody

image.png

结论:会报错,原因是requestBody中的流只能被读取一次,第一个对象读取后流就关闭了,再去读取就报错了

2.4 一个参数是加了@RequestBody ,另一个参数是List集合

结论:会报List集合没有构造方法,具体原因不知

3.如果要接收两个对象的,有个老哥是这样搞的,定义一个类,包含这两个对象,然后用这个类去做参数接收json,实际上是转换成一个json对象参数来接收

你可能感兴趣的:(2021-05-15)