当前位置: 首页 > 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.lryc.cn/news/623510.html

相关文章:

  • B站 韩顺平 笔记 (Day 21)
  • 新的“MadeYouReset”方法利用 HTTP/2 进行隐秘的 DoS 攻击
  • css中 hsl() 的用法
  • ubuntu常见问题汇总
  • 说一下分离读写
  • Linux入门指南:基础开发工具---vim
  • 谈谈对面向对象OOP的理解
  • Spring MVC 九大组件源码深度剖析(四):HandlerMapping - 请求映射的玄机
  • 问津集 #5:Crystal: A Unified Cache Storage System for Analytical Databases
  • Python自学10-常用数据结构之字符串
  • Windchill 11 Enumerated Type Customization Utility-枚举类型自定义实用程序
  • python---装饰器
  • 光耦,发声器件,继电器,瞬态抑制二极管
  • Rust Async 异步编程(一):入门
  • NestJS 手动集成TypeORM
  • USB 2.0声卡
  • Python中f - 字符串(f-string)
  • 基于Vue的个人博客网站的设计与实现/基于node.js的博客系统的设计与实现#express框架、vscode
  • 进程互斥的硬件实现方法
  • 影刀初级B级考试大题2
  • 快速掌握Hardhat与Solidity智能合约开发
  • 模型提取的相关经验
  • JavaWeb前端(HTML,CSS具体案例)
  • C语言网络编程TCP通信实战:客户端↔服务器双向键盘互动全流程解析
  • Java线程的6种状态和JVM状态打印
  • Vue深入组件:Props 详解3
  • 2.Pod理论
  • Golang database/sql 包深度解析(二):连接池实现原理
  • 云原生俱乐部-RH134知识点总结(3)
  • PyCharm与前沿技术集成指南:AI开发、云原生与大数据实战