controller层接收参数的注意事项,和三个注解的说明
2、springboot的请求体参数如何接收,url路径接收和请求体接收参数
使用@requestbody接收参数时是有要求的,根据我的推断是这样的:
承载@requestbody接收到的参数的变量,必须是一个类
比如,接收到的json对象是{name='github'},
用【String name】就不行,因为String基本算是一个基本类型,其内没有成员变量
但是,【class user{private String name】就可以接收。
值得一提的是,网上有这样一种说法:@requestbody只能接收json字符串,不能接收json对象,但我看博文的发布日期都是19年之前了,现在23年应该已经可以直接接收json对象了
我问了做vue的前端,说,从来都是直接传json对象的
@PathVariable
@PathVariable
注解主要是用来获取 url 参数,Spring Boot 支持 restfull 风格的 url,比如一个 GET
请求携带一个参数 id 过来,我们将 id 作为参数接收,可以使用 @PathVariable 注解
@RequestParam
GET用法
@RequestParam也是获取请求参数的,那么@RequestParam和@PathVariable有什么不同呢?
主要区别在于:
@PathValiable 是从 url 模板中获取参数值, 即这种风格的 url:http://localhost:8088/test/testPathVariable/{id} ;
@RequestParam 是从 request 里面获取参数值,即这种风格的 url: http://localhost:8088/test/testRequestparam?id=1
POST用法
@RequestParam注解还可以用于POST请求,接收前端表单提交的参数,假如前端通过表单提交username和
password两个参数,那我们可以使用@RequestParam来接收,用法和上面一样
@RequestBody
@RequestBody
注解用于接收前端传来的实体,接收参数也是对应的实体,比如前端通过 json 提交传
来两个参数 username 和password‘
参考:
(4条消息) Springboot中参数传递的三个注解的使用_潮汐先生的博客-CSDN博客
(4条消息) Post请求中@RequestParam和@RequestBody的混合使用_liberg的博客-CSDN博客_@requestparam post请求