为什么@RequestParam报错,@RequestBody却能正常运行?

ajax需要传两个参数到后端,所以尝试使用@RequestParam,但报错了,于是把参数删减到一个测试,发现用@RequestBody正常传输,用@RequestParam就会报Bad Request的错误,感觉我各项参数应该没写错,为什么会报错
如图

img

使用RequestBody正常,后台有数据

img

img

img

但使用RequestParam就会报错,且后台没收到数据

img

img

@RequestParam 注解是用于取请求url上的参数的,比如 http://localhost/test.html?name="zhangsan",这里的name参数就可以用@RequestParam 注解,并且@RequestParam 的 required属性默认是true,也就是你加了这个注解之后前段传过来的url参数中必须包含它。

@RequestBody 这个注解才是正常接收post请求中的请求体参数的。

回答:我之前也测试过,怀疑是参数的问题,由data配置项进行传递,采用RequestBody进行接收比较好,如果是路径参数,你可以试试RequestParam接收,不过过了挺久,我也没具体再尝试了;

下面为演示代码及结果展示

img

img

img

img

一般采用Restful 风格的api定义方式,这里只是简单实验