成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HTTP QUERY method,前端傳SQL不再是笑話

開發 前端
HTTP QUERY method 是個非常不錯的提案,期待各個 http 服務端和客戶端能夠早日實現,服務端數據請求接口再也不用去糾結該使用 GET 還是 POST。

上周筆者在 github 沖浪的時候發現了這樣一個 issues!說起 HTTP method 大家最熟悉的就是 GET 和 POST,今天我們一起來聊聊這個 HTTP QUERY method。

圖片圖片

一、介紹

HTTP QUERY 請求方法,這是一種安全、冪等的請求方式,它可包含請求內容。 GET 請求中傳達的數據量過大,無法編碼到請求的 URI 中時,通常需要使用 QUERY 方法。例如,雖然下面的查詢是常見且可互操作的:

GET /feed?q=foo&limit=10&sort=-published HTTP/1.1
Host: example.org

但如果查詢參數擴展到幾千字節或更多,可能就不行了,因為許多實現對它們的大小有限制。作為使用GET的替代方案,許多實現使用 HTTP POST 方法執行查詢,如下例所示。在這種情況下,搜索操作的輸入參數在請求有效載荷中傳遞,而不是使用請求URI。

一個典型的使用HTTP POST進行請求的示例:

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

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

然而,這種變化與GET一樣,存在同樣的基本限制,即在沒有特定知識的情況下,不容易明顯地看出正在執行安全、冪等的查詢。

QUERY方法提供了一個介于使用GET和POST之間的解決方案。與POST一樣,查詢操作的輸入在請求的有效載荷中傳遞,而不是作為請求URI的一部分。然而,與POST不同,該方法明確是安全的和冪等的,允許緩存和自動重試等功能正常工作。

二、QUERY method

QUERY方法用于啟動服務器端查詢。與HTTP GET方法不同,GET方法請求服務器返回由目標URI標識的資源的表示,QUERY方法用于請求服務器對有效請求URI范圍內的某些數據集執行查詢操作(由請求有效載荷描述)。對QUERY的響應返回的有效載荷不能假定是有效請求URI標識的資源的表示。

請求的有效載荷定義了查詢。實現可以使用任何具有適當查詢語義的內容類型與QUERY方法。

QUERY請求對于請求URI標識的資源是安全和冪等的。也就是說,QUERY請求不會改變目標資源的狀態。然而,在處理QUERY請求時,可以預期服務器將分配計算和內存資源,甚至可能創建額外的HTTP資源,通過這些資源可以檢索響應。

對QUERY請求的成功響應預計將提供有關操作最終結果的某些指示。例如,一個成功的查詢如果沒有結果,可以用204 No Content響應來表示。如果響應包括內容,預計它將描述操作的結果。在某些情況下,服務器可能選擇通過返回一個帶有Location頭字段的3xx重定向來間接響應QUERY請求,指定一個替代的請求URI,可以使用HTTP GET請求從該URI檢索結果。第4節展示了各種非規范的成功QUERY響應示例。

如果請求消息包括If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match或If-Range頭字段,則QUERY方法的語義變為“條件QUERY”。條件QUERY請求僅在條件頭字段(們)描述的情況下執行查詢。然而,需要注意的是,這些條件是針對目標資源本身的狀態進行評估,而不是搜索操作收集的結果。

2.1. 緩存

QUERY方法的響應是可以緩存的;緩存可以根據 HTTP-CACHING 使用它來滿足隨后的QUERY請求。

查詢的緩存鍵必須包含請求內容。在這樣做時,緩存應首先規范化請求內容,以去除語義上不重要的差異,從而提高緩存效率:

  • 移除內容編碼
  • 根據請求的Content-Type字段中的任何媒體類型后綴(例如,“+json”)基于格式約定進行規范化
  • 根據請求的Content-Type字段指示的內容本身的語義進行規范化

請注意,任何此類規范化僅用于生成緩存鍵;它不會更改請求本身。

2.2. “Accept-Query”頭字段

“Accept-Query”響應頭字段可以由服務器使用,以直接信號支持QUERY方法,同時識別可以使用的特定查詢格式媒體類型。

Accept-Query = 1#media-type

Accept-Query頭字段指定了由[RFCHTTP]第8.3.1節定義的媒體類型(及可選參數)的逗號分隔列表。

Accept-Query頭字段列出的類型順序無關緊要。

三、 示例

本節中的非規范示例使用基于SQL的簡單、假設的純文本查詢語法,并以逗號分隔值的形式返回結果。這只是為了說明目的。實現可以在請求和響應中自由使用任何格式。

3.1. 直接響應的簡單QUERY

具有直接響應的簡單查詢:

QUERY /contacts HTTP/1.1
Host: example.org
Content-Type: example/query
Accept: text/csv

select surname, givenname, email limit 10

響應:

HTTP/1.1 200 OK
Content-Type: text/csv

surname, givenname, email
Smith, John, john.smith@example.org
Jones, Sally, sally.jones@example.com
Dubois, Camille, camille.dubois@example.net

3.2. 間接響應的簡單QUERY(303 See Other)

具有間接響應(303 See Other)的簡單查詢:

QUERY /contacts HTTP/1.1
Host: example.org
Content-Type: example/query
Accept: text/csv

select surname, givenname, email limit 10

響應:

HTTP/1.1 303 See Other
Location: http://example.org/contacts/query123

獲取查詢響應:

GET /contacts/query123 HTTP/1.1
Host: example.org

響應:

HTTP/1.1 200 OK
Content-Type: text/csv

surname, givenname, email
Smith, John, john.smith@example.org
Jones, Sally, sally.jones@example.com
Dubois, Camille, camille.dubois@example.net

五、總結

HTTP QUERY method 是個非常不錯的提案,期待各個 http 服務端和客戶端能夠早日實現,服務端數據請求接口再也不用去糾結該使用 GET 還是 POST。對于示例中 QUERY 方法的類 sql 傳參,筆者認為可能不會這樣實現。但是還是比較期待能有數據庫廠商能夠提供類 http QUERY 的 sql api。

責任編輯:武曉燕 來源: JAVA架構日記
相關推薦

2014-08-29 17:19:31

國產操作系統

2015-03-30 15:28:42

創業創業融資七牛

2009-12-16 09:44:57

Linux桌面Linux

2025-05-26 08:27:00

2020-11-11 14:56:00

Docker容器工具

2009-06-12 08:39:07

BSM運維管理北塔

2011-11-21 13:11:46

Wi-Fi下一代熱點

2012-03-14 15:06:11

用友云計算

2011-09-20 10:24:30

2015-11-23 13:17:42

引導設計

2011-03-17 13:59:14

和信創天終端管理虛擬終端管理系統

2011-09-20 09:38:55

2017-03-14 13:28:53

2011-07-18 09:28:44

開源開放

2014-09-02 11:43:42

國產操作系統

2010-06-17 21:05:36

2013-07-03 09:32:31

IEInternet Ex

2024-12-20 14:34:40

2018-04-03 11:05:06

微軟Windows業務調整

2020-02-12 09:05:51

機器人人工智能物聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天躁日日躁狠狠的躁天龙影院 | 国产精品欧美一区二区三区 | 自拍偷拍亚洲一区 | 美女黄色在线观看 | 国产精品久久久久永久免费观看 | 91免费版在线观看 | 亚洲女人的天堂 | 国产欧美精品一区 | 国产情侣在线看 | 日本一区高清 | 日本在线免费看最新的电影 | 中文成人无字幕乱码精品 | 超碰超碰| 伊人网综合 | 黄色一级大片在线免费看产 | 欧美在线视频一区二区 | 国产精品免费一区二区三区四区 | 7777奇米影视 | 午夜成人免费电影 | 欧美一区二区三区在线播放 | 亚洲国产一区二区三区四区 | 成人午夜毛片 | av网站免费在线观看 | 亚洲精品美女视频 | 一区二区三区亚洲精品国 | 91视频91| 国产日韩一区二区 | 在线观看亚 | 免费中文字幕日韩欧美 | 久久激情视频 | 日韩精品一区二区三区在线播放 | 国产日韩欧美精品一区二区 | 人人草人人干 | 日韩电影一区 | 毛片国产 | 99久久夜色精品国产亚洲96 | 日本精品久久久久久久 | 久久国产区 | 成人午夜网站 | 人人干人人草 | 国产一区二区欧美 |