2012-11-10 46 views
1

考慮到與評論照片的典型嵌套的資源,創建註釋的路線會看起來像:關於刪除嵌套資源的RESTful路由的意見?

POST /photos/{photo_id}/comments 

現在,刪除評論,你會仍然使用「嵌套」路線?例如:

DELETE /photos/{photo_id}/comments/{comment_id} 

DELETE /comments/{comment_id} 

嵌套路線的好處在於,它反映了創建URL,並且不需要在routes.rb中的任何附加條目。使用頂級網址的專業人士是您在技術上不需要使用photo_id來刪除評論。

的思考?

+0

貴的問題得到解答? – 2012-11-14 12:01:04

回答

1

就個人而言,我只是使用嵌套的路線刪除,意味着我所用:

DELETE /photos/{photo_id}/comments/{comment_id} 

刪除照片的評論。如果我使用:

DELETE /comments/{comment_id} 

所以我必須爲此創建一條更多路線?我沒有找到任何理由來創建一個單獨的刪除路線,我認爲這不是必要的。嵌套的資源爲我們創建了url和路徑,他們遵循約定,我們爲什麼不使用它們?我只是想保持簡單,不會爲已有的東西做額外的工作。

2

你能GET呢?我想不是。我猜不是。但是,如果你不能GET的資源,你不能DELETE這一點。

所以只有你的第二個選擇是基於REST的。

2

您如何建模comments資源嚴重依賴你如何看待資源comments

如果評論可能存在沒有照片,並且可以用0到N資源相關聯像photo,那麼你應該建模您的意見是這樣

GET /comments/{comment_id} 
DELETE /comments/{comment_id} 

PUT /comments/ 

POST /comments/{comment_id}/associations/photo/{photo_id} 

如果評論總是與資源相關及在沒有與資源關聯就不能存在,那麼你應該用

POST /photos/{photo_id}/comments 

DELETE /photos/{photo_id}/comments/{comment_id} 

堅持我猜的混亂如何評論模型通過數據庫的模型,每一個評論得到一個唯一的ID所有COMME中是唯一的驅動NTS並不僅僅是在photo_idcomment_id組合密鑰是唯一的。我建議不要讓數據庫模型泄漏到資源模型中去尋找適合您對資源理解的模型。

+0

+ 1表示'不讓數據庫模型泄露給資源模型' – 2012-11-14 12:00:44