当前位置: 首页 > 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 路径、请求体、请求头等)。
  • 清晰性:通过注解明确参数的来源,提高代码可读性和可维护性。
  • 功能扩展:支持复杂的请求类型(如文件上传、多参数混合等)。

相关文章:

  • Java键盘鼠标事件监听器(鼠标)MouseListener、MouseMotionListener、MouseWheelListener和(键盘)keyListener
  • 科学养生,开启健康生活
  • Spring Security与SaToken的对比
  • 机试刷题:进制转换3
  • 蓝桥杯题库经典题型
  • 【Linux】操作系统入门:冯诺依曼体系结构
  • Python作业练习3
  • 【愚公系列】《Manus极简入门》036-物联网系统架构师:“万物互联师”
  • mysql环境配置
  • do while
  • 『大模型笔记』Langchain作者Harrison Chase专访:环境智能体与全新智能体收件箱
  • 从零开始掌握FreeRTOS(1)移植到STM32
  • Java Web 应用安全响应头配置全解析:从单体到微服务网关的实践
  • 【大模型LLM学习】MiniCPM的注意力机制学习
  • C语言| 静态局部变量
  • FastDDS Transport功能模块初步整理
  • ST25DV04K NFC TAG 使用日志
  • 发布两款AI会议耳机新品,未来智能解码AI硬件的三重价值跃迁
  • day24 python元组和OS模块的深度探索
  • Hapi.js知识框架
  • 首次采用“顶置主星+侧挂从星”布局,长二丁“1箭12星”发射成功
  • KPL“王朝”诞生背后:AG和联赛一起迈向成熟
  • 4月份全国企业销售收入同比增长4.3%
  • 我的科学观|梅彦昌:科技创新关键在于能否跑得快,而不是有没有钱
  • 北斗专访|特赞科技范凌:现在AI主要是“说话”,接下来要“干活”了
  • 中华人民共和国和巴西联邦共和国关于强化携手构建更公正世界和更可持续星球的中巴命运共同体,共同维护多边主义的联合声明