汽车
evening
开发者福音:HTTP QUERY 新方法将成为正式标准,只读查询不再尴尬借用 POST
2026-06-19
1 阅读
IT之家
IT之家 6 月 19 日消息,当地时间 6 月 16 日,互联网工程任务组(IETF)正式发布了 RFC 10008 标准文档,定义了一种全新的 HTTP 请求方法 ——QUERY。 该文档属于互联网标准跟踪文档(Standards Track),目前处于“提议标准”阶段。这一新方法被命名为“The HTTP QUERY Method”。 这份规范为 Web 开发者和 API 设计者提供了一种标准化的方式来处理那些需要携带请求体的复杂只读请求,简而言之,它在 GET 和 POST 方法之间填补了一个存在已久的空白。 普通用户在浏览网页时并不会直接看到 HTTP 方法,但这些方法始终在浏览器、应用程序、API、包管理器、命令行工具以及各类 Web 服务的底层默默运转。GET 用于请求数据,POST 用于提交数据,PUT 和 PATCH 用于更新资源,DELETE 则用于删除。然而,当 API 需要向服务器发送一个结构复杂的查询,同时又只想获取数据而不产生任何副作用时,开发者此前只能面对两种都不够理想的选择。 第一种是 GET 方法,它适用于参数简单、可直接编码在 URL 中的查询场景,它虽然语义明确、被广泛支持,但它的参数只能放在 URL 中。RFC 10008 中指出,这带来多个困扰:URL 存在长度限制但具体数值并不明确,某些结构化的数据很难编码到 URI 里,请求的 URI 更可能被日志记录或收藏夹保存,而且每一种不同的查询参数组合都会被视为一个独立的资源。当查询条件变得庞大或嵌套时,GET 就显得力不从心。 另一种选择是借用 POST 方法。POST 允许携带请求体,因此常被用于传递复杂查询条件,例如 POST /feed 配合表单数据。然而,POST 在语义上并不承诺请求是只读的 —— 它可能用于创建资源、更新数据、触发后台任务、提交表单,也可能仅仅用于执行一次搜索。服务器无法从方法本身判断该请求是否安全、是否会改变状态。 QUERY 方法正是为了弥合这一鸿沟而设计。它的使用方式与 POST 类似 —— 将查询参数放在请求体中而非 URL 中,从而突破了 GET 的 URI 长度限制。但在语义上,QUERY 与 GET 更为接近 —— 它被明确定义为“安全”(safe)且“幂等”(idempotent)的方法。 IT之家注:幂等是数学与计算机学概念,常见于抽象代数。 QUERY 请求可以被自动重复或重试,而无需担心对服务器状态产生部分更改。这与 GET 的语义一脉相承,但在表达形式层面则更接近 POST。从此,开发者不再需要因为 GET 不够灵活而将只读操作伪装成 POST,API 设计的意图也因此更加清晰。 RFC 10008 还详细规定了 QUERY 方法与现有 HTTP 机制的兼容方式。服务器可以通过 Allow 响应头字段声明对 QUERY 方法的支持。规范同时引入了新的 Accept-Query 响应头字段,用于告知客户端服务器接受哪些查询内容格式。此外,QUERY 响应支持缓存机制 —— 代理服务器或处理器可以缓存查询结果,为其分配 URI 供后续通过 GET 方法访问,并通过 Last-Modified 等头部信息管理缓存有效性。文档还涵盖了媒体类型、重定向、条件请求、范围请求及安全等相关议题。 RFC 10008 虽然已获得 IETF 的标准化批准并公开发布,但其作为“提议标准”的身份意味着实际落地仍取决于各类 Web 服务器、代理、客户端、浏览器、API 平台及开发工具逐步增加对 QUERY 方法的支持。 该规范由 IETF 的 HTTP 工作组多名成员联合编写,文档草案历经多轮社区讨论与修订,最终由 RFC 编辑团队在 2026 年 6 月作为提议标准正式刊发。