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

在Coontroller层中我们经常使用的@RequestParam, @PathVariable, @RequestBody ,区别以及各自的使用场景

 在 Spring MVC 中,@RequestParam, @PathVariable, 和 @RequestBody 是用来处理 HTTP 请求的不同类型的参数的注解。下面是它们之间的区别以及各自的使用场景:

1:@PathVariable

这个注解用于从 URL 路径中提取动态部分的值。
它通常与 {} 占位符一起使用,这些占位符定义了路径中的变量部分。
示例:

     @GetMapping("/users/{id}")
     public User getUser(@PathVariable String id) {
         // 根据路径中的 "id" 获取用户信息
     }
     

2:@RequestParam

用于获取 URL 查询字符串中的参数或 POST 表单数据中的参数。
如果一个方法参数没有被其他注解(如 @PathVariable 或 @RequestBody)标记,则默认情况下它会被认为是 @RequestParam。
示例:

     @GetMapping("/search")
     public List<User> searchUsers(@RequestParam("query") String query) {
         // 使用查询参数 "query" 进行搜索
     }
     

3:@RequestBody

用于将 HTTP 请求体中的内容绑定到方法参数上。
常常用于处理 POST, PUT 请求,其中请求体可能包含了 JSON 或 XML 格式的数据。
示例:

     @PostMapping("/users")
     public ResponseEntity<User> createUser(@RequestBody User newUser) {
         // 从请求体中读取新的用户信息并创建用户
     }
     

总结来说:
        当你需要从 URL 路径中捕获动态部分时,使用 @PathVariable。
        当你需要获取 URL 查询字符串中的参数或表单提交的数据时,使用 @RequestParam。
        当请求体中包含了要解析的数据(例如 JSON 对象)时,使用 @RequestBody。


http://www.kler.cn/news/306094.html

相关文章:

  • golang实现从服务器下载文件到本地指定目录
  • 简单接口自动化框架实现(Python+requests+pytest)
  • _Array类,类似于Vector,其实就是_string
  • 编写程序模版的搭建
  • Android Kotlin 中的 `groupBy` 方法详解
  • 手机玩机常识____展讯芯片刷机平台ResearchDownload的一些基本常识与问题解决
  • 基于CosyVoice的多语言语音合成技术解析
  • STM32(十三):通信协议——USART串口协议
  • React源码学习(一):如何学习React源码
  • Python学习——【1.2】数据类型、数据类型转换
  • yjs04——matplotlib的使用(多个坐标图)
  • Java网络编程 TCP通信(Socket 与 ServerSocket)
  • (批处理)设置延时+设置关机倒计时
  • Flink CEP(复杂事件处理)高级进阶
  • 【大数据方案】智慧大数据平台总体建设方案书(word原件)
  • 应用层协议HTTP介绍
  • 【自主搭建博客网站 第一篇章】前情提要
  • ??Ansible——ad-hoc
  • 修改 HTTP 和 HTTPS 代理设置为 `http://127.0.0.1:8118
  • 【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它
  • AI学习指南深度学习篇-Adam的基本原理
  • 计算机三级 - 数据库技术 - 第十三章 大规模数据库架构 笔记
  • 速通LLaMA1:《LLaMA: Open and Efficient Foundation Language Models》全文解读
  • ARM驱动学习之9注册字符类设备
  • Robot Operating System——带有时间戳和坐标系信息的线速度和角速度
  • 51单片机+proteus+(DS1302+DS18B20)
  • css选择器有几种?选择器的优先级是怎样的?
  • [网络][CISCO]Cisco-PIX配置详解
  • Leetcode 3290. Maximum Multiplication Score
  • 通过C# 裁剪PDF页面