我正在開發基於HAL規範的REST API。 API正在使用Symfony在PHP中開發,客戶端正在構建在angularjs中。 API必須返回一些列表,它們將使用ngtables library來顯示,並且需要過濾選項,理想情況下采用ngtables使用的格式,如this sample。將鍵值傳遞給RAL API中的鍵值以下HAL
{ "name": "M", "age": "4" }
(當然未來的客戶可能會使用相同的選項。)
我的前端,同事是在暗示我直接發送編碼爲URL參數的JSON,像這樣:
?filter=%7B%20%22name%22%3A%20%22M%22%2C%20%22age%22%3A%20%224%22%20%7D%20
雖然我不太確定。
我一直在閱讀如何通過URL發送數組,如param[]=foo¶m[]=bar
,但這確實意味着有多個值的一個鍵。在我的情況下,我需要能夠像Json對象那樣爲數組發送不同的鍵值。
我想知道客戶端的請求URL應該如何包含所有過濾器選項在一個參數中,以及是否有任何標準的方法來做到這一點。
EDITED:@Ross_Turner之後我想澄清一下,我在參數中傳遞一個鍵值數組的意圖是因爲我們會有另一種類型的參數。例如:
?filter=<my key-value array>&page=1&limit=50&anotherParam=whatever
即使我們想使用含有另一鍵值數組一次像這樣的參數:
?filter=<my key-value array>&sorting=<another key-value array>&page=1&limit=50
凡filter
和sorting
可以有相同的密鑰。
我剛剛編輯我的問題,試圖澄清爲什麼我試圖發送一個鍵值數組內的參數,能夠允許這樣的請求'?filter = <我的鍵值數組>&排序= <另一個鍵-value array>&page = 1&limit = 50'其中'filter'和'sorting'可以有相同的鍵。 – 2014-11-25 13:05:15
啊我現在看到,在這種情況下,您仍然只需要鍵和值的參數,你希望過濾,這應該意味着只有排序是問題,因爲你需要指定的鍵,無論是上升和下降,並在哪個命令。如果你必須支持多個排序值,比如'?name = M&age = 4&sortBy = name + asc,age + desc'。 我強烈建議您使用過濾鍵和值作爲GET請求上的查詢參數,因爲這是查詢RESTful資源的一種相當標準的方式。 – 2014-11-25 13:15:53
謝謝@RossTurner。如果使用另一個參數如'?page = 1&limit = 50',怎麼辦?將「name」或「age」設置在同一級別是否正確? – 2014-11-25 13:25:09