2014-08-27 44 views
4

注意:我在這裏認爲POST表示「create」,PUT表示「update」,就像GitHub一樣。這不是支持POSTPUT的論點。REST API:在資源上執行/取消操作的最佳方法

我有一個company資源和一個assign行動。我想知道如何在我的REST API中翻譯這種行爲。

我想過是這樣的:

PUT /company/:id/assign 
user_id: 5 

,如果我想取消分配這個用戶怎麼辦?

  • 我應該使用布爾值作爲參數嗎?
  • 我應該使用unassign操作嗎?
  • 我應該使用另一個HTTP動詞嗎?

最新的GitHub的API我看到了如何star a gist

PUT /gists/:id/star 

不爲什麼,而是如何unstar a gist

DELETE /gists/:id/star 

這似乎很奇怪,我。你是更新一個資源上的動作和刪除它。奇怪的。我可以理解POST而不是PUT

POST /gists/:id/star and DELETE /gists/:id/star對我來說似乎更多的邏輯。你怎麼看?

編輯:我打算與POSTDELETE一起工作。但隨着這是不可能與DELETE方法發送數據,我必須通過user_id在URL:

POST /company/:id/assign/:user_id 
DELETE /company/:id/assign/:user_id 

回答

2

使用布爾是不是真的清楚。我可以認爲這是一個非顯而易見的論證術語。考慮到大部分的API解釋是顯而易見的,最好的語法是好的。

最後,使用DELETE方法是您可以選擇的最佳選項。當您將用戶分配給公司時,您將創建一個關係。當你想取消分配時,你刪除關係。

+0

謝謝我編輯了我的文章! – Syl 2014-08-27 10:02:20

+0

+1,'POST/assignments {user:id,company:id} - > 201 id'就是這樣。分配是一個操作名稱,而不是資源名稱... – inf3rno 2014-08-27 10:10:04

相關問題