2015-05-14 36 views
0

我有一個RESTful服務器,實現了實體的get請求,而實體具有多個鍵。例如,獲取聯繫人信息,特定公司在特定國家(耐克,德國):REST獲取多值的多值

GET: http://hostname/rest/accounts/{company}/{country} 

我想添加一個功能,它允許客戶端查詢多個公司/國家對在一個呼叫。由於我在數據庫中有數百萬條記錄,所以我不想返回所有數據。另外,客戶可能需要~1000條記錄,所以我不想讓他撥打1000個電話。

我想在請求的正文中添加公司/國家對,但是這裏的答案HTTP GET with request body暗示這是一種不好的做法。

我不能使用查詢字符串參數,因爲我必須提供很多信息,而且大多數服務器對URL的大小都有限制。

對於這種情況,什麼是好的REST練習?

回答

1

有一個多請求協議的官方建議 - herebackground)。可能是因爲它依靠HTTP/2來提高效率增益,目前它似乎沒有太多動力。

對於少數資源,您可以在URL中指定它們。問題是~2000 characters的事實上的URL限制。雖然它主要適用於IE瀏覽器,但我認爲一個好的API應該在瀏覽器中運行良好,並且由於IE的限制,它可能適用於其他地方。

因此,我認爲你有兩種選擇。

實際上,您需要使用POST請求,其中主體包含請求的路徑列表,例如,作爲JSON編碼的數組。如參考文獻所示,這通常是不好的做法,但在這種情況下通常被認爲是合理的。實際的缺點是它不能緩存。