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

HTTP请求参数类型及对应的后端注解

在Java后端开发中,HTTP请求的不同部分需要使用不同的注解来处理。以下是四种主要请求参数类型及其对应的Spring注解:

1. 请求头(Headers)

  • ​位置​​:HTTP请求的头部信息

  • ​常用场景​​:认证信息(Token)、客户端信息、内容类型等

  • ​Spring注解​​:

    • @RequestHeader- 获取单个请求头

    • @RequestHeader Map<String, String>- 获取所有请求头

@GetMapping("/example")
public ResponseEntity<?> example(@RequestHeader("Authorization") String authToken,@RequestHeader Map<String, String> headers) {// 使用authToken和headers
}

2. 请求体(Body)

  • ​位置​​:HTTP请求的主体内容

  • ​常用场景​​:POST/PUT请求的JSON/XML数据

  • ​Spring注解​​:

    • @RequestBody- 将请求体反序列化为Java对象

@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody UserCreateDTO userDTO) {// 处理userDTO
}

3. 路径参数(Path Variables)

  • ​位置​​:URL路径中的变量部分

  • ​常用场景​​:RESTful API的资源标识

  • ​Spring注解​​:

    • @PathVariable- 获取路径中的变量

@GetMapping("/users/{userId}")
public ResponseEntity<User> getUser(@PathVariable Long userId) {// 根据userId查询用户
}

4. 查询参数(Query Parameters)

  • ​位置​​:URL中?后面的键值对

  • ​常用场景​​:过滤条件、分页参数等

  • ​Spring注解​​:

    • @RequestParam- 获取单个查询参数

    • @RequestParam Map<String, String>- 获取所有查询参数

    • @RequestParam(required = false)- 可选参数

    • @RequestParam(defaultValue = "default")- 带默认值

@GetMapping("/products")
public ResponseEntity<List<Product>> getProducts(@RequestParam String category,@RequestParam(required = false) String sortBy,@RequestParam(defaultValue = "1") int page) {// 根据参数查询产品
}

综合使用示例

@RestController
@RequestMapping("/api/v1")
public class UserController {@PutMapping("/users/{id}/status")public ResponseEntity<?> updateUserStatus(@PathVariable Long id,@RequestHeader("X-Auth-Token") String token,@RequestBody StatusUpdateDTO updateDTO,@RequestParam(defaultValue = "false") boolean notify) {// 验证token// 更新用户状态// 如果需要则发送通知return ResponseEntity.ok().build();}
}

其他相关注解

  1. @ModelAttribute

    • 用于绑定请求参数到命令对象

    • 常用于表单提交

  2. @CookieValue

    • 用于获取Cookie值

  3. ​参数校验注解​​(需配合@Valid使用)

    • @NotNull, @Size, @Pattern

最佳实践建议

  1. RESTful API设计:

    • 资源标识用路径参数(@PathVariable)

    • 过滤条件用查询参数(@RequestParam)

    • 创建/更新数据用请求体(@RequestBody)

  2. 安全性:

    • 敏感信息(如认证token)应放在请求头

    • 不要用GET请求发送敏感数据

  3. 可读性:

    • 参数名要有意义

    • 可选参数要设置required=false或默认值

  4. 版本控制:

    • 建议在请求头或路径中包含API版本信息

这些注解是Spring MVC/WebFlux中最常用的参数绑定方式,掌握它们可以高效地处理各种HTTP请求。

http://www.dtcms.com/a/335799.html

相关文章:

  • AMBA-AXI and ACE协议详解(七)
  • 【学习笔记】面向AI安全的26个缓解措施
  • API网关实施中典型陷阱
  • 【数据结构与算法】单调队列的定义和运用
  • 整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层联合 之1
  • Android Jetpack | Livedata
  • Gradle快速入门学习
  • 【算法】模拟专题
  • riscv中断处理软硬件流程总结
  • C++算法题目分享:二叉搜索树相关的习题
  • 原子指标、派生指标和复合指标
  • nodejs 中间件
  • 【Jenkins】01 - Jenkins安装
  • C语言网络编程TCP通信实战:客户端↔服务器双向键盘互动全流程解析
  • [GWCTF 2019]枯燥的抽奖
  • Java线程的6种状态和JVM状态打印
  • [TryHackMe]Brainpan1( 内存溢出)
  • PERCEIVER IO:一种用于结构化输入与输出的通用架构
  • 脉冲计数实现
  • 深入剖析ROS参数服务器通信机制 ——共享全局数据的“云端仓库”实现原理
  • Node.js安装教程
  • MySQL的事务日志:
  • java之 junit4单元测试Mockito的使用
  • 26. Object.defineProperty 和 Proxy 用法
  • 中级统计师-会计学基础知识-第五章 财务报告
  • 计算机算术6-SRT2除法
  • Linux817 shell:until,nfs,random
  • TypeScript中的import语法详解
  • 6.Ansible自动化之-管理变量和事实
  • 关于第一次接触Linux TCP/IP网络相关项目