Proxyman 现已支持 HTTP QUERY 方法
API 经常需要搜索或过滤数据。对于简单的搜索,通常使用 GET 请求即可。但当搜索条件较多时,URL 会变得很长,难以阅读和维护。
现在有了一个名为 QUERY 的新 HTTP 方法。它让 API 能够清晰地表达:“请帮我查找数据,但不要更改任何内容。”
Proxyman 现已在整个应用中支持 QUERY 请求。你可以手动编写 QUERY 请求,在抓取的流量中查看它,从繁杂的列表中过滤出它,并配合常用的调试工具使用。
1. 什么是 HTTP QUERY 方法?
QUERY 是一种新的 HTTP 方法,用于请求服务器搜索、过滤或选择数据。查询详情放在请求体中发送,而不是 URL 中。
核心思路很简单:QUERY 请求用于读取数据。它不应创建、更新或删除任何内容,并且在需要时可以安全地重复发送。
该方法定义在 RFC 10008 中。与其他 HTTP 方法一样,只有 API 服务器选择支持时,它才能正常工作。
它与 GET 和 POST 有什么不同?
GET、QUERY 和 POST 都可以向 API 发送输入。区别在于输入放在哪里,以及该方法向服务器表明了什么关于请求的含义。
- GET 将搜索值放在 URL 中。它适用于简单的请求,这类请求通常需要收藏或分享:
/products?brand=Proxyman&sort=price。 - QUERY 将搜索值放在请求体中。它适合包含大量过滤条件的详细搜索,并告诉服务器该请求是只读的。
- POST 同样在请求体中发送数据。它通常用于创建或修改内容,例如提交订单。API 也可以用
POST执行搜索,但仅凭该方法本身,无法判断它是否会修改数据。
简而言之:简单的基于 URL 的查询使用 GET,详细的只读搜索使用 QUERY,而当操作可能会创建或修改数据时,使用 POST。
cURL 简单示例
假设一个网上商店支持使用一组详细的过滤条件搜索商品。下面的请求用于查询有货的无线耳机,并按价格排序:
curl --request QUERY 'https://api.example.com/products/search' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"text": "wireless headphones",
"filters": {
"inStock": true
},
"sort": "price"
}'
--request QUERY 部分用于指定 HTTP 方法。其下方的 JSON 是搜索输入,Content-Type 则告诉服务器这是 JSON 数据。
如果使用 GET,同样的搜索就需要把所有内容放进 URL 中。当字段很多时,这会很不方便。
请不要指望所有 API 都已支持 QUERY。如果服务器不支持,你可能会看到 405 Method Not Allowed。该响应来自 API 服务器,而不是 Proxyman。
2. 在 Proxyman 中编写 QUERY 请求
现在,你可以直接在 Compose 工具中发送 QUERY 请求。当你想测试新的端点、检查响应,或将结果与 GET 或 POST 请求进行对比时,这非常有用。
- 在 Proxyman 中打开 Compose。
- 从方法菜单中选择 QUERY。
- 输入 API 的 URL。
- 添加 API 所需的请求头。对于 JSON 请求,通常为
Content-Type: application/json。 - 在 Body 标签页中输入搜索内容。
- 点击 Send,然后在右侧查看响应。

截图中显示的是 405 Method Not Allowed 响应。它说明 Proxyman 已发送 QUERY 请求,但所选端点不支持该方法。如果希望获得成功的响应,请使用明确标注支持 QUERY 的端点。
3. 快速查找 QUERY 流量
当应用开始使用 QUERY 时,它很容易淹没在大量 GET 和 POST 请求中。Proxyman 会在 Method 列中显示 QUERY,因此你可以一眼识别它。
要专注查看它,请打开过滤栏,并将 Method 设置为 QUERY。随后,Proxyman 只会显示匹配的请求,方便你检查或对比。

在测试搜索界面时,这一功能尤其有用:修改条件、重新执行搜索,即可直接看到对应的请求,而无需在无关流量中逐一筛选。
4. 结合你已熟悉的调试工具使用 QUERY
QUERY 并不局限于 Compose 和过滤功能。只要请求方法有意义的地方,Proxyman 都能识别它,因此它可以融入常规的调试流程。
- 请求详情: 在抓取的请求中查看
QUERY,并像查看其他方法一样阅读其请求头、查询值、请求体和响应。 - Debugging Tools: 当工具支持按方法匹配请求时,选择
QUERY,即可让规则仅作用于这些搜索请求。你的GET和POST流量可以保持不变。 - Scripting: 仅对
QUERY请求运行脚本。当你想在本地测试时检查搜索输入、添加测试请求头或修改响应时,这非常有用。 - Breakpoint: 在
QUERY请求到达服务器之前将其暂停。你可以检查或编辑搜索输入,然后继续发送并查看结果。
借助这些控制功能,规则或脚本可以精确地针对你想测试的请求,而不会影响更新或结账请求。
5. 总结与后续
HTTP QUERY 方法让 API 的意图更加清晰:它是在请求数据,而不是修改数据。当搜索需要的细节超出短 URL 的承载能力时,它非常有用。
借助 Proxyman,你现在可以:
- 编写并发送
QUERY请求 - 抓取并查看
QUERY流量 - 按
QUERY方法过滤主列表 - 在 Debugging Tools、Scripting 和 Breakpoint 中针对
QUERY请求进行设置
新的 HTTP 方法需要一段时间才能被广泛支持。在应用中使用之前,请先查阅 API 文档,或先测试该端点。如果返回 405 Method Not Allowed,说明它尚不支持 QUERY。
请测试从应用到服务器的完整链路,而不仅仅是服务器本身。较旧的网关、防火墙或客户端库可能会拒绝它不认识的方法。另外,还要检查你自己系统中的重试和缓存行为:该方法声明请求是只读的,但链路上的每个环节仍需正确处理它。
请保持 Proxyman 为最新版本,随着越来越多的 API 采用 QUERY,你就能随时检查和调试这类流量。如需了解更多,请阅读 RFC 10008,或访问 Proxyman 文档。
相关指南
