我有一個 get 請求,它將根據輸入串列給我一個獲勝者。
例如)。[{兔子:3,老虎:2},{兔子:1,驢:3},{鳥:2}]。// 獲勝者是 {rabbit:1, donkey:3}
我想設計一個獲取串列的端點。
我能想到的一種方法是這樣的:
/GET Winner?rabbit,3?tiger,2&rabbit,1?donkey,3
請求引數映射會像 key:{rabbit,3?tiger,2}: value=[]
或者,我可以這樣做:
/GET 贏家?id1=rabbit,3?tiger,2&id2=rabbit,1?donkey,3
但我根本不需要身份證資訊。
雖然這可以滿足我的需要,但我想知道用子物件表示查詢引數的最佳方式是什么?
uj5u.com熱心網友回復:
最明顯的似乎是:
GET /winner?rabbit=3&tiger=2&rabbit=1&donkey=3
uj5u.com熱心網友回復:
這里真的沒有很好的答案。
就 HTTP 而言,任何符合 RFC 3986 描述的生產規則的拼寫都可以。
如果您有一個可以通過URI Template輕松描述的表示,那么您(和您的客戶)可以利用通用模板庫。
但是...模板并沒有那么靈活,以至于它們可以用來描述任意訊息模式。我們得到了對字串、(字串的)串列和(字串的)關聯陣列的支持,而且……差不多就是這樣。
在 Web 上,我們可能會使用帶有 textarea 控制元件的表單來處理任意情況,該控制元件接受訊息的字串表示;然后瀏覽器會創建一個鍵值對,其中的值是文本區域中資訊的編碼表示。
因此,例如,您可以將 JSON 檔案的字串表示復制到表單中,提交表單,瀏覽器將組成匹配的查詢部分。在服務器上,您將反轉該程序以獲取 JSON 檔案。
當然,使用鍵值對并沒有什么特別神奇的地方。另一種可能性是忽略鍵值的鍵,只使用正確編碼的值作為查詢。同樣,服務器只是顛倒了這個程序。
另一種比較常見的嘗試是使用鍵值對,將鍵視為“路徑”——也就是說,每個鍵標識原始檔案中的一個位置,該值表示該位置可用的資訊。
?/0/rabbit=1&/0/tiger=2&/1/rabbit=1&/1/donkey=3&/2/bird=2
在此示例中,鍵的架構基于 JSON 指標 (RFC 6901),這是將分層資料扁平化為鍵值對的可能方法。這可能不是“最好的”,但至少傾向于容易標準化的方向。(標準化形式將是一種改進,但我無法確定一個)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/329241.html
標籤:休息
