1
在DELETE查詢中,如果我的REST API盲目地繼續或警告它並要求確認,可能會級聯移除大量數據?REST API應該保護背後的數據嗎?
我正在構建一個API,用於抽象存儲在關係數據庫中的複雜數據的操作。刪除其他項目引用的項目應邏輯上刪除它們,然後級聯。
一個簡單的例子(與真實案例無關)將是一組三個「樹/分支/葉」表:葉子行對分支的ID有一個外鍵,並且分支行同樣包括樹ID。 API可以在任何級別啓用DELETE,但是如果刪除樹項目,它將內部級聯以刪除直接或間接引用它的所有分支和葉子。
等了一樹刪除查詢,該API可以:
- 只是遵守並執行所有級聯清除
- 拒絕,理由是它會破壞完整性,所以你必須刪除所有相關項目先手動(不太實際)
- 不要刪除任何東西併發回語句「這樣會刪除1棵樹,31個分支和987棵樹葉,請確認」。確認可以採取URL(/ force)中額外的頭部或後綴的形式,但這兩者都不是非常REST,並且根據我的經驗,在編寫客戶端時(通常只發送delete + confirm查詢),這些東西通常會被直接繞過。我也猶豫在HTTP代碼上這樣回覆。
我傾向於認爲API應該保持簡單,並且應該在客戶端使用Foolsafe保護,但會欣賞外部智慧。
感謝您的想法。我想我會嘗試'不刪除'的想法,但不要過多地改變任何內容,從而使刪除變得簡單並且可以恢復。儘管如此,還是不知道如何在REST模型中取消刪除。 – Tehel
@Tehel有一種可能性是使物品在單獨的「垃圾」集合中可用。 – Evert