HTTP 新增方法 QUERY:16 年来首个新动词,复杂查询终于有解
来源:dev.to — 2026-09-06
📋 概述
2026 年 6 月,RFC 10008 标准化的 HTTP QUERY 方法成为自 2010 年 PATCH 以来 16 年间首个新增的 HTTP 动词。QUERY 本质上是一个「带请求体的 GET」:它同时具备 GET 的安全、幂等、可缓存特性,又能像 POST 一样在 body 中携带 SQL、JSONPath 或任意复杂的过滤器,彻底解决了过去开发者在 GET 的 URL 长度/日志泄露局限与 POST 的不可幂等、无法缓存局限之间二选一的困境。文章还介绍了它的「请求 URI」特性(可对同一查询生成可重放、可缓存的永久 URL)以及从概念走向生产前需要等待实现普及的现实。
🔑 核心要点
- 这是 PATCH(2010)以来 16 年第一个被标准化的 HTTP 新方法,由 RFC 10008 于 2026 年 6 月定义,QUERY 兼具 GET 的安全幂等与 POST 的可携带请求体能力
- 对 GET 加复杂过滤的老路受限于 URL 长度上限、参数落入日志泄露、复杂查询难以编码;改用 POST 则失去幂等性与标准 HTTP 缓存,代理也无法判断能否安全拒绝或重试
- QUERY 的请求体可承载无限大小的 SQL/JSONPath/复杂过滤器,幂等地执行十次等于执行一次,网络中断后可安全重放而不会产生重复或脏数据
- 「请求 URI」机制让服务器能创建一个永久 URL 来重放同一查询,从而支持分享链接、收藏搜索、缓存查询本身、周期性重放而无需重复发送请求体
- 代理、CDN、浏览器终于可以对带 body 的请求做功能化 HTTP 缓存,复杂查询的性能收益巨大,REST API 设计也走向单一端点的更易维护、更安全、更易监控
- 部署节奏现实:协议已标准化,但极少服务器与客户端支持,真正的采纳可能要到 2027–2028 年,生产使用前应等待实现更普及
💡 金句
这是个小改变,却有大影响——它解决了一个开发者绕了多年的真实问题。
👍 0
👎 0
← 返回 dev.to 首页