@RequestBody

@RequestBody 主要用来接收前端传递给后端的 json 字符串中的数据(请求体中的数据);

@RequestParam 

1.value:请求中传入参数的名称,如果不设置后台接口的 value 值,则会默认为该变量名。

2.required:是否包含该参数,默认为 true,如果设置为 false 时,当请求中没有此参数,将会默认为 null,而对于基本数据类型的变量,则必须有值,否则这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。

3.defaultValue:默认参数值,如果设置了该值,required=true 将失效,自动为 false.

 @PathVariable

 接收请求路径中占位符的值,
@PathVariable 注解可以将 URL 中占位符参数绑定到控制器处理方法的入参中;其实就是URL 中的 {xxx} 占位符可以通过 @PathVariable(“xxx“) 绑定到操作方法的入参中。

@Valid  

@Valid 注解可以实现数据的验证,可以先定义实体,在实体的属性上添加校验规则,而在 Api 接收数据时添加 @valid 关键字,这时定义的实体将会开启一个校验的功能。

@RequestBody注解和 @RequestParam 注解的区别


Get 请求中,不能使用 @RequestBody。 在 Post 请求可以使用 @RequestBody 和 @RequestParam,但是如果使用 @RequestBody,对于参数转化的配置必须统一

@RequestParam 注解接收的参数是来自于 requestHeader 中,即请求头。都是用来获取请求路径 url 中的动态参数。也就是在 url 中,格式为 xxx?username=123&password=456。
@RequestBody 注解接收的参数则是来自于 requestBody 中,即请求体

@RequestParam 注解和 @PathVariable 注解的区别 

关键点不同的是 @RequestParam 是从 request 里面拿取值,而 @PathVariable 是从一个 url 模板里面来填充。 

花了一点时间把这些注解整理了一下,表诉更加直观 ,把重点突出了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐