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



相关文章
|
Java
Java @Data 注解详细说明
Data注解是 Lombok 提供的一个组合注解,它会为类自动生成一些常见方法的样板代码,包括 getter、setter、equals、hashCode 和 toString 方法。
3430 5
|
11月前
|
安全 NoSQL Java
SpringBoot接口安全:限流、重放攻击、签名机制分析
本文介绍如何在Spring Boot中实现API安全机制,涵盖签名验证、防重放攻击和限流三大核心。通过自定义注解与拦截器,结合Redis,构建轻量级、可扩展的安全防护方案,适用于B2B接口与系统集成。
1343 3
|
NoSQL Redis 数据安全/隐私保护
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
文章提供了Redis最流行的图形化界面工具Another Redis Desktop Manager的下载及使用教程,包括如何下载、解压、连接Redis服务器以及使用控制台和查看数据类型详细信息。
6664 6
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
|
XML JSON 前端开发
Java @RequestParam和@RequestBody的区别是什么?
【8月更文挑战第28天】Java @RequestParam和@RequestBody的区别是什么?
655 5
|
Java Spring 容器
DI依赖注入的几种手段
本内容介绍了依赖注入的四种方式:构造器注入、接口注入、Setter注入和注解注入,并重点比较了Spring中的@Autowired与Java标准注解@Resource的区别,包括来源和依赖查找策略。
550 0
|
XML JSON Java
【Java用法】@RequestParam、@RequestBody、@ResponseBody和@PathVariable的使用与区别
【Java用法】@RequestParam、@RequestBody、@ResponseBody和@PathVariable的使用与区别
1266 0
|
前端开发 小程序 Java
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
本文详细介绍了如何在SpringBoot项目中统一处理接口返回结果及全局异常。首先,通过封装`ResponseResult`类,实现了接口返回结果的规范化,包括状态码、状态信息、返回信息和数据等字段,提供了多种成功和失败的返回方法。其次,利用`@RestControllerAdvice`和`@ExceptionHandler`注解配置全局异常处理,捕获并友好地处理各种异常信息。
8502 1
【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
|
消息中间件 编解码 网络协议
Netty从入门到精通:高性能网络编程的进阶之路
【11月更文挑战第17天】Netty是一个基于Java NIO(Non-blocking I/O)的高性能、异步事件驱动的网络应用框架。使用Netty,开发者可以快速、高效地开发可扩展的网络服务器和客户端程序。本文将带您从Netty的背景、业务场景、功能点、解决问题的关键、底层原理实现,到编写一个详细的Java示例,全面了解Netty,帮助您从入门到精通。
3180 0
|
XML 缓存 Java
一文讲明Mybatis 的使用 超详细 【爆肝两万字教程】
文章提供了一份详尽的Mybatis使用教程,涵盖了Mybatis的简介、环境搭建、基本操作、配置解析、日志使用、分页、注解开发、多对一和一对多关系处理、动态SQL以及缓存机制等方面的内容,并提供了相应的代码示例和测试用例。
一文讲明Mybatis 的使用 超详细 【爆肝两万字教程】
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。