我想將操作添加到我的REST API中,以便在不同「存儲」之間移動「資源」。在RESTful URL中使用動詞和形容詞的替代方案
例如,假設我的資源通過以下網址正常訪問:
/resources
/resources/{resourceId}
現在假設我想「停用」一些資源,即在概念上它移動到另一個子文件夾。最直接的方法就是遵循這一點。
'取消'資源,即導致資源在/ resources下不可用。從概念上講,它是移動「對象的 '/資源/取消/' 子文件夾:
POST /resources/{resourceId}/deactivate
或者:
POST /resources/deactivated/{resourceId}
獲取所有停用的對象:
GET /resources/deactivated
顛倒'禁用'動作,即從概念上將對象從'/resources/deactivated/'子文件夾返回到主文件夾('/resources')。
要麼
POST /resources/{resourceId}/reactivate
或者
POST /resources/deactivated/{resourceId}/restore
這個API似乎相當直觀的我。但它似乎違反了我在許多最佳實踐中看到的'更喜歡名詞'規則 - 有關REST API的文章:我使用動詞和形容詞來代替名詞!
請注意,我可能有所有端點的參數,例如, GET/resources/deactivated?createdBefore = 01022017
對於我的REST API有更好的選擇嗎?即更多RESTful,但不是更不直觀的?
- Confusion Between Noun vs. Verb in Rest URLs
- GitHub的動詞的用法(POST /學家/:ID /星,DELETE /學家/:ID /星):
,我能找到的話題好的資源https://stackoverflow.com/a/19648997/1847482
- 上需要去尋找「另一對象類型」好主意:https://stackoverflow.com/a/2022938/1847482
我喜歡你的答案(投票),因爲它給了我一個更好的瞭解REST方法。但我不認爲簡單地改變'狀態'屬性對我來說是不可接受的,因爲'GET/resources'不應該返回被禁用的屬性。 – Alexander
@Alexander要獲取所有資源,您可以請求'GET/api/resources'。它將返回活動和非活動的。要過濾'resources'集合,可以使用'status'之類的查詢參數。所以'GET/api/resources?status = active'會返回活動的,而'GET/api/resources?status = inactive'會返回不活動的。您可以爲您的查詢參數設定默認值。如果'status'被忽略,假設你只想要活動的。 –
我不同意。 'GET/resources'應該返回所有的對象,而不管特定屬性的值如何,否則它會很混亂。但另一方面,它不應該返回「停用」的,這意味着它不是簡單的常規屬性。 – Alexander