當在REST API中實施業務邏輯並使用什麼HTTP狀態代碼時,事實上/常規的做法是什麼?REST:DELETE和業務邏輯條件
例如,可以說我有一個玩家實體和一個團隊實體。一支球隊可以有任意數量的球員。
假設我的業務邏輯(當前)阻止團隊被刪除,直到所有玩家已被明確從團隊中刪除。
如果執行
DELETE http://api.foo.com/teams/15
,它仍然具有與之關聯的玩家,你會返回一個HTTP 409(衝突)或HTTP 412(預處理失敗)? 412似乎更合乎邏輯,因爲我更喜歡使用409來表示樂觀鎖定條件。
或者 - 甚至應該在REST API中強制執行業務邏輯條件嗎?也就是說,如果有人執行
DELETE http://api.foo.com/teams/15
不應該只是刪除所有玩家,然後自動刪除該團隊?允許DELETE執行的更傳統,因爲REST API可以被視爲比UI界面更「低級」或更「原始」的?
最後,關於查詢參數在資源URI什麼:
DELETE http://api.foo.com/teams/15?force=true
這表明,「是的,我知道這不會與球員仍在隊中是允許的,但做無論如何「。
這裏的想法是,刪除一個團隊可能是一個重量級的操作,會帶來顯着的影響,並且只有在最終用戶真的確定他們想要時纔會這樣做。
換句話說,你做了多少手工操作(用'你確定嗎?'錯誤代碼)還是你沒有任何檢查就執行它?我不太確定這是否應該只在用戶界面或REST API或兩者中執行。大多數人今天如何解決這個問題?