在 API 开发与使用中,请求参数和请求头是请求中两个重要的组成部分,分别承担着不同的功能和作用。以下是对它们的详细介绍:
请求参数(Request Parameters)
定义
请求参数是用户通过请求体(Body)、URL 路径、或 URL 查询字符串传递给服务器的数据,用于指定请求的内容或修改请求的行为。
分类
-
查询参数(Query Parameters)
- 出现在 URL 中,用于传递非敏感数据。
- 格式:
?key1=value1&key2=value2
- 适用场景:筛选、排序、分页等功能。
- 示例:
GET /users?role=admin&page=2&limit=10
-
路径参数(Path Parameters)
- 嵌入在 URL 路径中,用于标识资源。
- 通常以花括号
{}
表示占位符。 - 适用场景:获取特定资源。
- 示例:
GET /users/{user_id} 实际请求:GET /users/123
-
请求体参数(Body Parameters)
- 以 JSON、XML 或其他格式的请求体传递数据。
- 适用场景:创建或更新资源。
- 示例:
POST /users { "username": "john_doe", "email": "john.doe@example.com", "password": "securepassword" }
特点
- 请求参数的字段和值通常是后端设计时定义的,前端需按文档格式传递。
- 作用:用于告诉服务器你想要什么,比如请求的筛选条件、分页信息、要修改的字段等。
请求头(Request Headers)
定义
请求头是包含在 HTTP 请求中的元信息,通常用来为服务器提供上下文信息,比如身份验证令牌、请求来源、客户端信息等。
常见请求头字段
字段名称 | 描述 |
---|---|
Authorization | 用于传递身份验证令牌(例如 Bearer Token)。 |
Content-Type | 指定请求体的内容类型(例如 application/json 、application/xml )。 |
Accept | 指定客户端希望接收的数据类型(例如 application/json )。 |
User-Agent | 表示客户端的信息(例如浏览器版本、设备类型)。 |
Host | 指定请求的目标服务器域名或 IP 地址。 |
Cache-Control | 控制缓存行为(例如 no-cache 、max-age=3600 )。 |
Referer | 指定请求来源的 URL(用于防盗链或统计来源)。 |
X-Custom-Header | 自定义请求头,开发者可以根据需求定义任意字段。 |
示例
-
请求头格式
GET /users/me HTTP/1.1 Host: api.example.com Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... Content-Type: application/json User-Agent: Mozilla/5.0
-
请求头示例代码
import requests headers = { "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "Content-Type": "application/json", "Accept": "application/json" } response = requests.get("https://api.example.com/users/me", headers=headers) print(response.json())
特点
- 请求头的作用:为请求提供附加信息,通常用于身份验证、指定内容格式或优化请求。
- 注意事项:
- 不要在请求头中传递敏感数据(如密码)。
- 请求头字段通常是大小写不敏感的,但规范使用推荐用小写。
对比
特性 | 请求参数 | 请求头 |
---|---|---|
传递数据的位置 | URL 或请求体 | HTTP 请求的头部部分 |
数据用途 | 指定请求的内容(如筛选条件) | 提供请求的上下文(如认证信息) |
常见使用场景 | 分页、筛选、路径资源标识 | 认证、数据类型、客户端标识 |
安全性 | 查询参数容易暴露(在浏览器 URL 可见) | 请求头较安全,不会显示在 URL |