@RequestBody、@RequestParm、@PathVariable三个注解的区别

简介: @RequestBody、@RequestParm、@PathVariable三个注解的区别

鉴于第一次再整理这个问题的时候,整理完仍然不清楚,觉得现有文章的描述可能我不太理解。今天依然遇到了相同的问题,这次我想用通俗易懂的话说明白,希望能给大家带来帮助。

1.通俗易懂版

  • @RequestBody:在遇到post和put请求,需要把参数丢在requestbody里面 。
  • @RequestParm:从 request 里面拿取值,注解是获取静态 url 传入的参数 。
  • @PathVariable:是从一个 url 模板里面来填充, 获取请求路径中的变量作为参数 。

对上述进行解释:

显然@RequestBody很好区分于另外两个注解,大多数时候是用于post请求的,用于接收post请求中form表单中的数据,用来接收前端传递给后端的 json 字符串中的数据(请求体中的数据)。



@RequestParam 和 @PathVariable 一样,都是用于从request请求中绑定参数的:区别在于,前者是静态的URI;后者是获取请求路径中的变量作为参数,需要和 @RequestMapping(“item/{itemId}”) 配合使用。


从上图可以看出,使用@PathVariable时,请求地址中的username是{username}是动态的;而使用@RequestParam时,请求地址中has-username是固定的。

2.名词解答版

1.requestParam(请求参数):使用@RequestParam注释将请求参数绑定到控制器中的方法参数。用于从请求访问查询参数值的@RequestParam注释。

以下是@RequestParam注释支持的参数列表:

  • defaultValue -这是一个默认值,如果请求没有该值或该值为空,则作为回退机制。
  • name—要绑定的参数名称
  • required -参数是否为必选。如果为true,则发送该参数失败。
  • value -这是name属性的别名

2.requestBody(请求体):使用@RequestBody方法参数注释表明方法参数应该绑定到HTTP请求体的值。

3.PathVariable(路径变量):使用@PathVariable,URI模板可用于在@RequestMapping方法中方便地访问URL的选定部分。@PathVariable标识在传入请求的URI中使用的模式。@PathVariable注释只有一个用于绑定请求URI模板的属性值。允许在单个方法中使用多个@PathVariable注释。但是,请确保不超过一个方法具有相同的模式。


总结:


@RequestParam is use for query parameter(static values) like: base=2&ext=4


@PathVariable is use for dynamic values like :



相关文章
|
XML JSON 数据格式
@RequestParam @RequestBody @PathVariable 等参数绑定
@RequestParam @RequestBody @PathVariable 等参数绑定
|
7月前
|
JSON 前端开发 Java
为什么参数上必须加@RequestBody?
为什么参数上必须加@RequestBody?
229 0
|
7月前
|
Java API Spring
spring注解中@RequestParam和@PathVariable的区别
spring注解中@RequestParam和@PathVariable的区别
147 0
|
7月前
|
存储 XML JSON
@RequestBody、@RequestParam 、@PathVariable @RequestPart 傻傻分不清
@RequestBody、@RequestParam 、@PathVariable @RequestPart 傻傻分不清
469 0
|
前端开发 Java Spring
方法参数相关属性params、@PathVariable和@RequestParam用法与区别
方法参数相关属性params、@PathVariable和@RequestParam用法与区别
103 0
|
XML JSON Java
【Java用法】@RequestParam、@RequestBody、@ResponseBody和@PathVariable的使用与区别
【Java用法】@RequestParam、@RequestBody、@ResponseBody和@PathVariable的使用与区别
161 0
Springboot中@RequestParam和@PathVariable的用法与区别
Springboot中@RequestParam和@PathVariable的用法与区别
|
XML SQL JSON
@PathVariable、@RequestBody、@RequestParam、@ResponseBody、@Param的详解和用法
@PathVariable、@RequestBody、@RequestParam、@ResponseBody、@Param的详解和用法
172 0
|
JSON 前端开发 数据格式
@RequestParam、@RequestBody、@PathVariable区别和案例分析
@RequestParam、@RequestBody、@PathVariable区别和案例分析
172 2