這基本上是最佳實踐的問題。在我Rest API(我目前正在使用的)中,我有路由匹配PUT
和DELETE
請求的網址,例如/resources/{resourceID}
。 API的後面是SQL DB。Rest API更新/刪除 - 檢查資源是否存在?
一般情況下,執行在SQL數據庫上不存在的資源ID DELETE
或UPDATE
查詢沒有給出錯誤,只有affectedRows
返回0
現在我對如何正確地執行這樣的請求一個問題:
- 檢查是否與給定的ID的資源是否存在之前
UPDATE
或DELETE
(其涉及額外的SQL查詢) - 觸發
UPDATE
/DELETE
無覆蓋查詢ut檢查是否存在並檢查SQL查詢的結果,並在affectedRows == 0
的情況下返回HTTP 404
?
我個人比較喜歡後者。但是我可以想到其他DBMS(不是SQL或不關聯)執行INSERT
,UPDATE
或DELETE
查詢可能不會返回任何有關受影響行的信息。如何在這種情況下進行?
看看這裏:https://github.com/for-GET/http-decision-diagram –