HTTPQUERY

学习 · 测试 · 验证 HTTP —— 方法(含新方法 QUERY)、状态码与实时请求

English

QUERY 是一个提案中的 HTTP 方法,填补了一个真实的空白:它像 GET 一样 安全(safe)幂等(idempotent),又像 POST 一样可以携带 请求体(body)。可以把它理解为 “可以带 body 的 GET”

它为什么存在

复杂查询长期面临一个尴尬的二选一:

QUERY 化解了矛盾:语义表明*“这是一次读取”*,而请求体承载查询条件。

特性

特性 QUERY GET POST
安全
幂等
请求体
可缓存 有条件

一个请求长什么样

QUERY /products HTTP/1.1
Host: shop.example
Content-Type: application/json
Accept: application/json

{ "category": "boots", "inStock": true }

用 Content-Location 缓存

因为 QUERY 安全且幂等,响应可以被缓存 —— 但缓存键不能只用 URL,因为 body 会变。 服务端用 Content-Location 头指明结果的规范位置:

HTTP/1.1 200 OK
Content-Location: /products?category=boots&inStock=true
Cache-Control: max-age=60

缓存(或客户端)随后即可对等价请求复用该表示。这正是让「带 body 的读取」保持 可缓存的机制。

动手试试

实时测试 向本站回显端点发起一个真实的 QUERY 请求, 直观看到 method、headers 与 body 如何抵达服务端。

QUERY 定义在一份 IETF Internet-Draft 中,仍在演进。以上细节请当作工作摘要, 以链接的 draft 原文为权威与最新依据。