@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 :



相关文章
|
消息中间件 数据库 RocketMQ
分布式事务常见解决方案
分布式事务常见解决方案
2591 0
|
5月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
951 0
|
12月前
|
存储 缓存 算法
HashMap深度解析:从原理到实战
HashMap,作为Java集合框架中的一个核心组件,以其高效的键值对存储和检索机制,在软件开发中扮演着举足轻重的角色。作为一名资深的AI工程师,深入理解HashMap的原理、历史、业务场景以及实战应用,对于提升数据处理和算法实现的效率至关重要。本文将通过手绘结构图、流程图,结合Java代码示例,全方位解析HashMap,帮助读者从理论到实践全面掌握这一关键技术。
363 14
|
XML JSON 前端开发
Java @RequestParam和@RequestBody的区别是什么?
【8月更文挑战第28天】Java @RequestParam和@RequestBody的区别是什么?
446 5
|
前端开发 Java Spring
SpringBoot2.6.x 整合swagger3.0 报错Failed to start bean ‘documentationPluginsBootstrapper‘
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
16183 3
SpringBoot2.6.x 整合swagger3.0 报错Failed to start bean ‘documentationPluginsBootstrapper‘
|
前端开发 小程序 Java
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
本文详细介绍了如何在SpringBoot项目中统一处理接口返回结果及全局异常。首先,通过封装`ResponseResult`类,实现了接口返回结果的规范化,包括状态码、状态信息、返回信息和数据等字段,提供了多种成功和失败的返回方法。其次,利用`@RestControllerAdvice`和`@ExceptionHandler`注解配置全局异常处理,捕获并友好地处理各种异常信息。
6866 1
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
|
XML JSON Java
【Java用法】@RequestParam、@RequestBody、@ResponseBody和@PathVariable的使用与区别
【Java用法】@RequestParam、@RequestBody、@ResponseBody和@PathVariable的使用与区别
678 0
|
存储 关系型数据库 MySQL
【阿里规约】阿里开发手册解读——数据库和ORM篇
从命名规范、建表规范、查询规范、索引规范、操作规范等角度出发,详细阐述MySQL数据库使用过程中所需要遵循的各种规范。
【阿里规约】阿里开发手册解读——数据库和ORM篇
|
Java 编译器 Spring
面试突击78:@Autowired 和 @Resource 有什么区别?
面试突击78:@Autowired 和 @Resource 有什么区别?
16531 6
|
SQL API 数据处理
新一代实时数据集成框架 Flink CDC 3.0 —— 核心技术架构解析
本文整理自阿里云开源大数据平台吕宴全关于新一代实时数据集成框架 Flink CDC 3.0 的核心技术架构解析。
1748 0
新一代实时数据集成框架 Flink CDC 3.0 —— 核心技术架构解析