我想實作一個 DELETE REST API。但我需要提供要洗掉的 ID 串列的選項。此串列可以任意長,并且可能不適合 URL。
我知道POST支持這一點,但支持這一點DELETE似乎值得商榷。我想知道其他人是如何處理這個案子的。
如何設計 API 來處理這種情況?
uj5u.com熱心網友回復:
不幸的是,這是 REST 中最大的限制之一,但有一些方法可以繞過它。
在這種情況下,我將抽象出一個新物體 DeletionRequest,并將其發布或放入適當的 ID。由于它是一個新物體,它將有自己的休息端點。
這樣做的一個很好的副作用是可以擴展端點和物體以支持異步請求。如果你想洗掉大量資料,你不想依賴它在單個請求中發生,因為超時之類的事情可能會妨礙你。使用 DeletionRequest,用戶可以在第一次推送時獲取洗掉請求的 ID,然后使用 GET 請求檢查狀態。在幕后,您可以使用異步系統(celery、sidekiq 等)來實際洗掉內容并更新 DeletionRequest 的狀態。
當然,您不必走那么遠,但這將允許您朝那個方向擴展應用程式,而無需更改您的 API。
uj5u.com熱心網友回復:
URI 是資源識別符號,因此我認為 DELETE 不應包含正文,即使您可以使用客戶端和服務器執行此操作。您可以在 URI 中發送資料,也可以在 DELETE 之前發送資料。
我在這里看到 3 個選項,但也許還有其他選項:
- 照羅伯特所說的去做,然后發布一個事務資源,而不是像洗掉請求一樣。
- 將要洗掉的資源分組并洗掉整個組。
- 進行大規模的破解并修補您要從中洗掉的資源集合。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/437100.html
標籤:休息 http asp.net-web-api http动词
