除了GET方法,新的HTTP QUERY方法规范发布


近日IETF提交新规范讨论:定义了一种新的 HTTP 方法QUERY,QUERY方法作为一种安全、幂等的请求方法,可以携带请求内容。
大多数情况下,当请求中传送的数据量太大而无法编码到请求的 URI 中时,推荐采取QUERY方式。
例如,虽然这是一个常见且可互操作的查询:

GET /feed?q=foo&limit=10&sort=-published HTTP/1.1

如果查询参数扩展到几千字节或更多的数据,它可能不会正常运行,因为许多实现都限制了它们的大小。通常,这些限制是无法提前知道或发现的,因为请求可能会通过许多不协调的系统。此外,在目标 URI 中表达一些数据是低效的,因为它需要被编码为一个有效的 URI。
因此,很多使用HTTP POST 方法作为使用 GET 的替代方法来执行查询,这种变体与 GET 具有相同的基本限制。

POST /feed HTTP/1.1
Host: example.org
Content-Type: application/x-www-form-urlencoded

q=foo&limit=10&sort=-published

 
QUERY 方法提供了一种解决方案,它跨越了使用 GET 和 POST 之间的差距。与 POST 一样,查询操作的输入在请求的有效负载内传递,而不是作为请求 URI 的一部分。然而,与 POST 不同的是,该方法是明确安全和幂等的,允许缓存和自动重试等功能运行。
 
“Accept-Query”响应头域可以被服务器用来直接表示对 QUERY 方法的支持,同时标识可以使用的特定查询格式媒体类型。
 
注:Query = 带有一堆body内容的GET
幂等性= QUERY 请求不会改变目标资源的状态
详细点击标题