关于@RequestBody 有的时候能接收有的时候接收不了的情况,@RequestParam什么时候使用

Posted qiaohechen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于@RequestBody 有的时候能接收有的时候接收不了的情况,@RequestParam什么时候使用相关的知识,希望对你有一定的参考价值。

最近有点疑惑的是,在公司用@RequestBody  可以解析前端发送的json串,但是自己在做项目的时候老是会接受不到,报415错误,于是寻思了一下,看了看请求体有何不同,发现确实不同,

技术图片

 

 这个是表单提交,格式为这个样子的,所以前台不能加@RequestBody ,否则会接收不到参数,而公司前台进行传递参数的时候是这样传的

技术图片

 

所以必须加此注解告知需要进行解析,并赋值到接收参数的对象里面,进行后续的操作,还有就是@RequestBody是接收请求体的参数,而@RequestParam接收到的是请求头中的信息,换句话说,

@RequestParam就是只能从请求的地址中取出参数,也就是只能从username=admin&password=admin这种字符串中解析出参数,这样是不能提取出请求体中的参数的。(不明白的进一步解释:spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头,也就是在url中,格式为xxx?username=123&password=456,而RequestBody注解接收的参数则是来自于requestBody中,即请求体中。)

那这样接收参数的话,肯定是和请求的方式也是有一定关系的,例如:

在get请求下,后台接收参数的注解为RequestBody时会报错;在post请求下,后台接收参数的注解为RequestParam时也会报错。这下彻底明白了!!!!

以上是关于关于@RequestBody 有的时候能接收有的时候接收不了的情况,@RequestParam什么时候使用的主要内容,如果未能解决你的问题,请参考以下文章

记录一些遇见的bug——关于Lombok的一个大坑,使用@RequestBody接收axios请求对象时,对象所有属性均为null

记录下httpclient 发送请求 服务端用@RequestBody 自动接收参数 报415

关于打印this.$refs 有的情况是组件实例 有的时候是数组

关于@requestbody接收不到参数的问题

关于@RequestBody的一些分析

@RequestBody和@RequestParam的应用场景的区分