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

Spring框架请求注解

Spring框架请求注解

1.@RequestParam

  • 作用:从请求的 查询参数(Query Parameters)表单数据(Form Data) 中提取参数。
  • 适用场景:
    • GET 请求的 URL 参数(如 /users?name=Tom&age=20)。
    • POST 请求的表单数据(application/x-www-form-urlencoded 格式)。
@GetMapping("/users")
public List<User> getUsers(@RequestParam String name, @RequestParam int age) {// 处理查询参数
}

2.@RequestBody

  • 作用:从请求的 请求体(Request Body) 中提取数据,通常用于处理 JSON、XML 等结构化数据。
  • 适用场景:
    • POST/PUT 请求的 JSON/XML 数据(如 application/json 格式)。
    • 上传复杂对象(如嵌套结构、自定义类等)。
  • 示例
@PostMapping("/users")
public User createUser(@RequestBody User user) {// 处理 JSON 数据
}

3.@PathVariable

  • 作用:从 URL 路径中提取 路径变量(Path Variables)
  • 适用场景:
    • RESTful 风格的 API(如 /users/{id})。
  • 示例
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {// 处理路径变量
}

4. @RequestHeader

  • 作用:从请求的 请求头(Headers) 中提取参数。
  • 适用场景:
    • 获取自定义请求头(如 AuthorizationContent-Type)。
  • 示例
@GetMapping("/profile")
public String getProfile(@RequestHeader("Authorization") String token) {// 处理请求头中的 Token
}

5. @CookieValue

  • 作用:从请求的 Cookie 中提取参数。
  • 适用场景:
    • 获取用户登录状态(如 Session ID)。
  • 示例
@GetMapping("/user")
public String getUser(@CookieValue("JSESSIONID") String sessionId) {// 处理 Cookie 中的 Session ID
}

6. @RequestPart

  • 作用:用于处理 multipart/form-data 请求中的部分数据(如文件和字段混合数据)。
  • 适用场景:
    • 文件上传与表单字段混合的场景。
  • 示例
@PostMapping("/upload")
public ResponseEntity<?> uploadFile(@RequestPart("file") MultipartFile file,@RequestPart("description") String description) {// 处理文件和描述字段
}

7. @ModelAttribute

  • 作用:将请求参数绑定到一个 Java 对象中(支持自动映射字段)。
  • 适用场景:
    • 表单提交时将多个字段映射到一个对象。
  • 示例
@PostMapping("/users")
public User createUser(@ModelAttribute User user) {// 处理表单数据绑定到 User 对象
}

8. @Param(MyBatis 中使用)

  • 作用:在 MyBatis 中用于指定 SQL 参数的名称。
  • 适用场景:
    • 数据库操作中传递参数。
  • 示例
@Select("SELECT * FROM users WHERE name = #{name}")
User findByName(@Param("name") String name);

总结对比

注解数据来源适用场景
@RequestParam查询参数或表单字段(x-www-form-urlencoded简单参数传递(如分页、搜索条件)。
@RequestBody请求体(JSON/XML)上传复杂对象或大量数据(如用户注册、更新)。
@PathVariableURL 路径RESTful 风格的 API(如 /users/{id})。
@RequestHeader请求头获取自定义头信息(如 Authorization)。
@CookieValueCookie获取用户会话信息(如 JSESSIONID)。
@RequestPartmultipart/form-data 请求体文件上传与表单字段混合的场景。
@ModelAttribute表单字段将表单字段自动映射到 Java 对象。

为什么需要这么多注解?

  • 灵活性:不同的场景需要不同的参数绑定方式(如 URL 路径、请求体、请求头等)。
  • 清晰性:通过注解明确参数的来源,提高代码可读性和可维护性。
  • 功能扩展:支持复杂的请求类型(如文件上传、多参数混合等)。
http://www.xdnf.cn/news/434143.html

相关文章:

  • 从生产流程到故障处理,R²AIN SUITE 如何为制造业“减负”?
  • Transformer架构介绍+从零搭建预训练模型项目
  • ai讲ping
  • 【C盘空间不足怎么办】
  • git merge和git rebase
  • 科学养生:构建现代健康生活新范式
  • LamaIndex rag(增强检索)入门
  • MySQL:关系模型的基本理论
  • 以价值为导向的精准数据治理实践,赋能业务决策
  • 基于STM32、HAL库的SGTL5000XNLA3R2音频接口芯片驱动程序设计
  • 数据库--处理模型(Processing Model)
  • DCDC输入4.5V-65V耐压 5A电流异步降压芯片SL3075兼容替换TPS54560
  • 【蓝桥杯嵌入式】【复盘】第13届国赛真题
  • 微店根据关键词取商品列表 API 返回值说明
  • 【NextPilot日志移植】params.c解析
  • 大白话解释「量化」是什么
  • (1+x)-1次幂 (1-x)-1次幂 泰勒展开式
  • 论坛系统(中-1)
  • PostgreSQL pg_dump 与 Oracle expdp 对比
  • AI大模型从0到1记录学习 linux day22
  • 项目里程碑未被明确,如何有效控制进度
  • 网页常见水印实现方式
  • Memcached 的特性和使用场景介绍,以及集群搭建
  • sqlserver免费版每天备份数据库
  • 英语学习5.12
  • 进程与线程:08 一个实际的 schedule 函数
  • 【周输入】510周阅读推荐-1
  • 如何使用 Qwen3 实现 Agentic RAG?
  • 采用AI神经网络降噪算法的语言降噪消回音处理芯片NR2049-P
  • C++中的虚表和虚表指针的原理和示例