当客户端发起 HTTP 请求 时,它们可以在 URL 末尾添加请求参数(也叫查询参数或 URL 参数)来传递数据。这些参数以键值对的形式出现在 URL 中,方便浏览和操作。
以下是一些带有请求参数的 URL 示例:
- /users?id=1234
- /posts?category=tech&sort=asc
- /search?q=hello+world
这些参数出现在 ? 之后,并使用 & 分隔,每个参数都能够被服务器读取以便处理请求。
请求参数作为 REST API 的一部分,具备多项优势:
%20。 综合来看,请求参数为 REST API 提供了一种高效传递数据的方式。请求参数主要有四种类型:
这是最常见的参数类型,附加在 URL 路径的 ? 之后:
/users?page=1&per_page=20
查询参数适用于过滤、排序、分页和简单查询。
这些参数通常嵌入在 URL 路径中:
/users/{userId}
这种方式能够让标识符和固定属性直接出现在资源路径上,增加 API 的自描述性。
头部参数提供了关于请求的元数据,比如内容类型、认证信息等。这些参数位于 HTTP 请求头中,与请求体分离。 示例:
- Content-Type: application/json
- Authorization: Bearer <token>
这些参数包含请求体中的数据,通常用于 POST、PUT 和 PATCH 请求来传输如 JSON 对象或表单数据的实际内容。 示例:
- {
- "username": "example",
- "password": "password123"
- }
GET 请求通常使用查询参数,适用于过滤结果、分页和排序。查询参数的例子:
GET /users?status=active&sort=-createdAt
虽然 POST 请求可以包含查询参数,但一般避免这么做。应该使用路径参数来识别资源,并将其他数据放入请求体中:
- POST /users/{userId}/comments
- {
- "text": "Hello World!"
- }
与 POST 类似,PUT 请求应使用路径参数来识别资源,并将需要更新的数据放在请求体中:
- PUT /users/{userId}
- {
- "firstName": "Jane"
- }
PATCH 请求用于部分更新已有资源,仅发送需要修改的数据,优化网络流量。 示例:
- PATCH /api/users/123
- {
- "age": 40,
- "city": "New York"
- }
Apifox 是一个 API 文档工具,能根据请求参数等信息生成详尽的 API 文档。
在 Apifox 中,可以记录请求参数的名称、类型、描述及验证规则,确保使用 API 的开发人员清楚每个请求的预期数据。

在服务器端,可以从请求中提取和验证参数再使用。在 Express 中,参数储存在 req.params 和 req.query 对象中。 示例:
- app.get('/users', (req, res) => {
- const sort = req.query.sort;
- const limit = req.query.limit;
-
- // ...
- });
客户端可以使用类似 qs 的库来生成和解析参数字符串。
验证请求参数是避免安全问题和数据错误的重要步骤:
请求参数使得数据传输更加简便、灵活,并且符合 REST 原则。 在使用请求参数时,最佳实践包括:
通过这些策略,可以构建出高效、安全的 API 系统。