当前位置: 首页 > news >正文

@RequestParam,@RequestBody和@PathVariable 区别

        @RequestParam,@RequestBody和@PathVariable 这三者是spring常见的接受前端数据的注解,那么他们分别是接受什么的前端数据呢?

  1. @RequestParam:这个注解主要用于处理请求参数,尤其是GET请求中的查询参数和表单参数。它可以用来获取请求中的参数值,并将其绑定到方法的参数上。默认情况下,@RequestParam会根据参数的名称来匹配请求中的参数名。如果参数是必需的,可以使用required属性来设置。如果需要为请求参数设置默认值,可以使用defaultValue属性。
  2. @RequestBody:这个注解主要用于接收前端传递给后端的JSON字符串中的数据。由于GET方式没有请求体,所以使用@RequestBody接受数据的时候,前端需要使用POST方式提交数据。@RequestBody注解可以用来绑定请求体中的数据到方法的参数上,支持多种类型的数据绑定,如Java对象、Map等。
  3. @PathVariable:这个注解主要用于接收请求路径中的占位符值。在Spring 3.0及以上版本中引入了该注解。通过@PathVariable可以将URL中占位符参数绑定到处理器类的方法形参中。语法为@PathVariable("xxx"),其中"xxx"为占位符的名称。

看了上面解释呢,可能还不够清晰,那我们来从前端是传怎么的数据来理解:

  1. @RequestParam:用于处理请求参数,尤其是GET请求中的查询参数和表单参数。它根据参数的名称来匹配请求中的参数名。前端传递的参数格式为“key=value”的形式,例如“name=John&age=25”。在后端,可以通过将该注解标注在方法参数上来获取对应的参数值。例如,URL为“/user?name=John&age=25”,方法可以定义为“public String getUser(@RequestParam String name, @RequestParam Integer age)”。
  2. @RequestBody:用于接收前端传递给后端的JSON字符串中的数据。由于GET方式没有请求体,所以使用@RequestBody接受数据的时候,前端需要使用POST方式提交数据。前端传递的JSON格式数据可以是任意类型,例如{"name":"John","age":25}。在后端,通过将该注解标注在方法参数上来接收JSON数据并将其转换为相应的对象。例如,URL为空,前端传递的JSON数据为{"name":"John","age":25},方法可以定义为“public String createUser(@RequestBody User user)”。
  3. @PathVariable:用于接收请求路径中的占位符值。占位符需要在URL中指定,例如“/user/{id}”,其中“{id}”是占位符。在后端,通过将该注解标注在方法参数上来获取对应的占位符值。例如,URL为“/user/123”,方法可以定义为“public String getUser(@PathVariable Long id)”。这个也是restful风格的。

综上所述,@RequestParam接受前端GET请求中的查询参数和表单参数,格式为“key=value”的形式;@RequestBody接受前端POST请求中的JSON数据,格式为任意类型;@PathVariable接受请求路径中的占位符值,需要在URL中指定占位符的名称。

相关文章:

  • Python从请求头中获取参数(Burp Suite)
  • 【动态规划】LeetCode-10. 正则表达式匹配
  • Selenium教程04:鼠标+键盘网页的模拟操作
  • 旋转图像(LeetCode 48)
  • 计算机网络-VLAN原理与配置
  • 跟我学c++中级篇——再谈C++20中的协程
  • leetcode07-罗马数字的转换
  • 盛最多水的容器【双指针】
  • 数据结构OJ实验14-哈希查找
  • Redisson依赖冲突记录
  • STC进阶开发(三)蜂鸣器、RTC时钟、I2C总线、外部中断、RTC闹钟设置、RTC计时器设置
  • C语言——指针
  • 百度吉利合作造车生态,极越“智价比”能否带来科技平权?
  • 数据库管理-第127期 LSM Tree(202301225)
  • openFeign服务调用
  • Apache的基本使用
  • Electron入门介绍
  • ES6 ...操作符
  • Git学习与使用心得(1)—— 初始化
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • mysql_config not found
  • Puppeteer:浏览器控制器
  • springMvc学习笔记(2)
  • 搭建gitbook 和 访问权限认证
  • 关于springcloud Gateway中的限流
  • 使用权重正则化较少模型过拟合
  • 通信类
  • 我有几个粽子,和一个故事
  • 系统认识JavaScript正则表达式
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 阿里云重庆大学大数据训练营落地分享
  • 通过调用文摘列表API获取文摘
  • #define用法
  • #Java第九次作业--输入输出流和文件操作
  • #WEB前端(HTML属性)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (2015)JS ES6 必知的十个 特性
  • (Matlab)使用竞争神经网络实现数据聚类
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (简单) HDU 2612 Find a way,BFS。
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十三)Flask之特殊装饰器详解
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net 无限分类