Proxyman 现已支持 HTTP QUERY 方法

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 请求进行对比时,这非常有用。

  1. 在 Proxyman 中打开 Compose。
  2. 从方法菜单中选择 QUERY。
  3. 输入 API 的 URL。
  4. 添加 API 所需的请求头。对于 JSON 请求,通常为 Content-Type: application/json。
  5. 在 Body 标签页中输入搜索内容。
  6. 点击 Send,然后在右侧查看响应。
在 Proxyman 中编写 QUERY 请求
在 Proxyman 中编写 QUERY 请求

截图中显示的是 405 Method Not Allowed 响应。它说明 Proxyman 已发送 QUERY 请求,但所选端点不支持该方法。如果希望获得成功的响应,请使用明确标注支持 QUERY 的端点。

3. 快速查找 QUERY 流量

当应用开始使用 QUERY 时,它很容易淹没在大量 GET 和 POST 请求中。Proxyman 会在 Method 列中显示 QUERY,因此你可以一眼识别它。

要专注查看它,请打开过滤栏,并将 Method 设置为 QUERY。随后,Proxyman 只会显示匹配的请求,方便你检查或对比。

在 Proxyman 中按方法过滤已抓取的 QUERY 请求
在 Proxyman 中按方法过滤已抓取的 QUERY 请求

在测试搜索界面时,这一功能尤其有用:修改条件、重新执行搜索,即可直接看到对应的请求,而无需在无关流量中逐一筛选。

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 文档。

相关指南

Noah Tran
Noah Tran

最后修订于 2026年7月17日。 新增关于新 HTTP 方法全链路兼容性的建议。

编写并查看 HTTP QUERY 请求

使用 Proxyman 发送 QUERY 请求、过滤已抓取的流量,并测试你的 API 规则。

试用 Proxyman