@RequestParam与@RequestBody的区别及Postman对应操作

首先,这两个注解都是用来接收前端传给后端的数据的,但是前端传送的格式不同,后端就要选择相应的注解来接收,否则就会报400 Bad Request错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TyXGy6p9-1607932568643)(C:\Users\Wypeng\Pictures\csdn\1\400badrequest错误.png)]
[外链图片转存失败,源站可能有
防盗]!链机制,建(C\Users\Wypeng\Pictures\csdn\1)]
在这里插入图片描述

或者是 Required String parameter ‘xxx’ is not present错误

虽然不敢说以上两种错误的原因一定是这两个注解用错了导致的,但是大部分应该都是这个原因。所以今天对这两个注解做一下总结。

我之前的理解是@RequestBody是用来接收对象数据的,对应的请求应该为post请求,而且数据格式应该是json格式,当发送请求时,其内容会被封装到请求头中,不会被拼接到URL后面;而@RequestParam会被拼接到URL后面。很简单的理解,希望写完这篇文章之后能有些深刻的认识。

1.@RequestParam搭配GetMapping

这是实体类

在这里插入图片描述

这是后台

在这里插入图片描述

下面是postman的测试结果:

1.1 以键值对方式传参

结论:加不加注解都能接收

在这里插入图片描述

1.2 封装到body中以正常表单数据方式传参

结论:都可

在这里插入图片描述

1.3 封装到body中以json格式传参

结论:不可行

在这里插入图片描述

验证了一下,图中圈出的地方俊不可行

在这里插入图片描述

接收对象

经测试,Get请求无法通过@RequestParam接收参数

2.@RequestBody搭配GetMapping

后台接口如图:

在这里插入图片描述

2.1 以键值对方式传参

不可

在这里插入图片描述

2.2 封装到body中以正常表单数据方式传参

不可

在这里插入图片描述

2.3 封装到Body中以x-www-form-urlencoded格式传参

可行,但是此时接收的是键值对,需要对参数进行处理
在这里插入图片描述

2.4 封装到body中以json格式传参

同上

在这里插入图片描述

接收对象

只能接收json格式,其余均不可行

在这里插入图片描述

3 .@RequestBody搭配@PostMapping

3.1接收对象(不带@RequestBody注解)

除如图下方式,其他均可在这里插入图片描述

3.2 接收对象(带@RequestBody注解)

除如图下方式,其他均不可

在这里插入图片描述

@RequestParam搭配@PostMapping

1.1 接收对象

post请求无法通过@RequestParam接收对象

1.2 接收普通参数

除json外均可

结论:

@RequestParam用来接收普通参数,适用大部分

@RequestBody和post请求搭配使用,接收对象

欢迎指正

Guess you like

Origin blog.csdn.net/Wyunpeng/article/details/111174371