如果REST API端點全部獲得,則過濾器很容易。缺少過濾器意味着「獲得所有結果」。當默認情況下,REST過濾器中「match-all」的正確查詢參數是什麼?
GET /persons - gets all persons
GET /persons?name=john - gets all persons with name of "john"
但如果有一個默認的,那麼我需要一些方法來明確不設置默認篩選器。繼續上面的例子,如果每個人都有一個state
,「批准」或「待定」,如果我的系統設置,例如,如果我沒有明確指定的狀態,它會返回所有「認可」:
GET /persons - gets all approved persons, because defaults to state=approved
GET /persons?state=approved - same thing, gets all approved persons
GET /persons?state=pending - gets all pending persons
我如何獲得所有人員?如果有10種可能的狀態會怎麼樣?還是100?
我能想到的幾種方法:
GET /persons?state=any
- 但是我永遠不可能用實際狀態any
GET /persons?state=*
- 會的工作,但感覺很奇怪嗎?或者是?GET /persons?state=
- 一些URL解析庫會抱怨一個空白的查詢參數,並且這不暗示「狀態是空的」而不是「狀態是什麼」?
我怎麼說在我的GET,「覆蓋狀態的默認值是什麼」?
這聽起來很公平。我很驚訝,我還沒有提出這個問題,但我沒有。 – deitch
我最終做到了這一點。只是擴展了REST框架http://github.com/deitch/booster以允許開發者選擇他想要的「任何」,並且它運行得非常漂亮。我爲此使用了'*',但對於框架無關緊要。 – deitch