我正在創建一個Web服務,我對路徑名有一些疑問。如何在RESTful Web服務中的資源中指定操作?命名RESTful路徑
例如:測驗資源。你有正常的CRUD操作,你也想在測驗中做些事情。如產生一個新的測驗。這是一個行動。你使用類似/quiz/top5
或/quiz?type=top5
的路徑還是什麼?
我不明白在創建RESTful服務時如何編寫對資源執行操作的路徑。
我正在創建一個Web服務,我對路徑名有一些疑問。如何在RESTful Web服務中的資源中指定操作?命名RESTful路徑
例如:測驗資源。你有正常的CRUD操作,你也想在測驗中做些事情。如產生一個新的測驗。這是一個行動。你使用類似/quiz/top5
或/quiz?type=top5
的路徑還是什麼?
我不明白在創建RESTful服務時如何編寫對資源執行操作的路徑。
我就從apigee推薦這本電子書:Web API Design: Crafting Interfaces that Developers Love。
按照他們的建議:
+------------+-------------------+--------------+----------------------------------------+------------------+ | Resource | POST create | GET read | PUT update | DELETE delete | | /quizzes | Create a new quiz | List quizs | Bulk update quizs | Delete all quizs | | /quizes/12 | Error | Show Quiz 12 | If exists update Quiz 12, if not Error | Delete Quiz 12 | +------------+-------------------+--------------+-----------------------------------------+------------------+
關於你想要的頂級目錄,也許類似於他們的「分頁和部分緩解」一節中勾勒出一個解決方案可滿足您的需求:
quizzes/top?limit=5
通過這種方式,您可以首先製作具有默認值(5或10個項目)的資源quizs/top
,然後提供分頁/更改項目數量的功能。
這真的取決於你 - RESTful模式不要求命名約定。
What are the best/common RESTful url verbs and actions?這可能對你有幫助嗎?
只要路線合理:例如測驗/顯示/ {編號},測驗/頂部/ {編號}等...
編輯:添加回答評論圍繞路線行動命名,取自Rails公約。 http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions
那麼如何編寫在資源上觸發「進程」的路徑呢?我的意思是像一個動作,而不僅僅是CRUD路徑? – LuckyLuke 2013-04-09 15:03:34
查看編輯abouve ... – diagonalbatman 2013-04-09 15:04:21
在另一個答案他說,你應該使用URL來指定對象,而不是動作。嗯...所以你使用「top」指定對象的例子? – LuckyLuke 2013-04-09 15:07:10
這是你喜歡的。我個人比較喜歡的方式,last.fm API的工作原理:
但是,如果你在尋找一些不錯的標準,看看這個帖子:
我推薦閱讀這個回答https://stackoverflow.com/a/11170376/300886到類似的問題。
一般來說,你應該考慮你的API的哪些部分應該可以通過GET獲得,哪些通過POST獲得。通過GET可用的資源通常應該使用名詞來描述,動作(比如可能發佈測驗的答案)應該可以通過使用動詞描述的POST(或DELETE,可能)來描述,可能在名詞 - 資源的名稱之後該行爲已被採納。
如this文章中所解釋的,其更適於使用目錄結構作爲REST URL。
的URL像/{type}/{operation}/{param1}/{param2}...
看起來更加直觀和maitainable(帕拉姆可以作爲經典?=
,如果他們有太多的傳遞)
所以在你的情況下,可以/quiz/top/5
或者明天應該是前100,則同樣能爲/quiz/top/100
我會使用'/ quiz/generate/123'作爲id'123' – 2013-04-09 15:00:08
我會使用'/ quiz/{id}' – 2013-04-09 15:00:41