关于@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