最近有点疑惑的是,在公司用@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时也会报错。这下彻底明白了!!!!