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

请求参数:Header 参数,Body 参数,Path 参数,Query 参数分别是什么意思,什么样的,分别通过哪个注解获取其中的信息

在API开发中(如Spring Boot),请求参数可以通过不同方式传递,对应不同的注解获取。以下是 Header参数、Body参数、Path参数、Query参数 的区别及对应的注解:


Header 参数


• 含义:通过HTTP请求头(Headers)传递的参数,通常用于认证(如Authorization)、客户端信息(如User-Agent)等。

• 示例:

GET /api/user HTTP/1.1
Authorization: Bearer xxxx

• Spring注解:

• @RequestHeader:获取单个Header值。

• @RequestHeader Map<String, String>:获取所有Headers。

• 代码示例:

@GetMapping("/user")
public String getUser(@RequestHeader("Authorization") String token) {return "Token: " + token;
}

Body 参数


• 含义:通过HTTP请求体(Body)传递的参数,通常用于提交JSON/XML格式的复杂数据(如创建资源)。

• 示例:

POST /api/user HTTP/1.1
Content-Type: application/json{"name": "Alice", "age": 25}

• Spring注解:

• @RequestBody:将请求体反序列化为Java对象(需指定Content-Type为application/json)。

• 代码示例:

@PostMapping("/user")
public User createUser(@RequestBody User user) {return userService.save(user);
}

Path 参数


• 含义:通过URL路径传递的参数(RESTful风格),用于标识资源(如用户ID)。

• 示例:

GET /api/user/123

• Spring注解:

• @PathVariable:从URL模板中提取变量值。

• 代码示例:

@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {return userService.findById(id);
}

Query 参数


• 含义:通过URL问号后拼接的参数(?key=value),用于过滤、分页等非必选参数。

• 示例:

GET /api/user?name=Alice&age=25

• Spring注解:

• @RequestParam:获取单个Query参数。

• @RequestParam Map<String, String>:获取所有Query参数。

• @RequestParam(required = false):标记参数为可选。

• 代码示例:

@GetMapping("/user")
public List<User> searchUsers(@RequestParam String name,@RequestParam(required = false) Integer age
) {return userService.search(name, age);
}

总结对比表

参数类型

传递方式

典型用途

Spring注解

Header

HTTP请求头

认证、客户端信息

@RequestHeader

Body

HTTP请求体(JSON/XML)

提交复杂数据

@RequestBody

Path

URL路径(如/user/1)

标识资源

@PathVariable

Query

URL问号后(?name=xx)

过滤、分页等可选参数

@RequestParam


其他注意事项

  1. 混合使用:一个接口可以同时使用多种参数类型(如Path + Query + Header)。
@PutMapping("/user/{id}")
public User updateUser(@PathVariable Long id,@RequestBody User user,@RequestHeader("X-Request-From") String source
) { ... }
  1. 默认值:@RequestParam和@RequestHeader支持设置默认值:
@RequestParam(defaultValue = "1") int page
  1. RESTful设计:优先使用Path参数标识资源,Query参数用于辅助操作(如排序、搜索)。

相关文章:

  • 【Leetcode】系列之206反转链表
  • 需求变更控制不严,如何防止项目范围扩大
  • Express知识框架
  • Day22打卡-复习
  • PHP编写图书信息爬虫程序
  • 跨域问题深度解析与解决方案
  • rbac模型详解
  • Go语言多线程爬虫与代理IP反爬
  • 【Java继承】——面向对象编程的基石
  • 从经典力扣题发掘DFS与记忆化搜索的本质 -从矩阵最长递增路径入手 一步步探究dfs思维优化与编程深度思考
  • 互联网大厂Java求职面试实战:Spring Boot与微服务场景深度解析
  • 鸿蒙HarmonyOS list优化一: list 结合 lazyforeach用法
  • yarn workspace使用指南
  • 精品可编辑PPT | 全面风险管理信息系统项目建设风控一体化标准方案
  • 数据库实验报告 SQL SERVER 2008的基本操作 1
  • 企业对数据集成工具的需求及 ETL 工具工作原理详解
  • 一键生成达梦、Oracle、MySQL 数据库 ER 图!解锁高效数据库设计!
  • 《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》
  • PostgreSQL 序列(Sequence) 与 Oracle 序列对比
  • springboot集成langchain4j实现票务助手实战
  • 北洋“修约外交”的台前幕后——民国条约研究会档案探研
  • 美国政府信用卡被设1美元限额,10美元采购花一两小时填表
  • 《单身情歌》制作人韩贤光去世,林志炫发文悼念
  • 外交部就习近平主席将出席中拉论坛第四届部长级会议开幕式介绍情况
  • 罕见沙尘再度入川,官方:沙尘传输高度达到平流层,远超以往
  • 陈雯出任外交部离退休干部局局长,此前为外交部办公厅副主任