除了GET方法,新的HTTP QUERY方法規範釋出

banq發表於2021-11-11

近日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 請求不會改變目標資源的狀態
詳細點選標題

相關文章