簡體   English   中英

很奇怪 http 刪除 rest 操作 - 刪除有很多參數

[英]Very strange http delete rest operation - delete with a lot parameters

分析團隊制定了一些對我來說聽起來有點奇怪的規范。

我必須刪除數據庫表上的資源。 我有 rekord 的 id 作為輸入參數。

這是直截了當的 http 刪除操作。

DELETE http://my-url/{id}

他們想添加一些其他值作為輸入參數,出現在 rekord 中,因為,他們說“在這種情況下刪除操作非常微妙,我們希望確保排除前端的錯誤,傳遞的 id 應該是 id rekord 的值通過”。

關於這個要求有很多內部討論。 菜餚在參與者之間飛來飛去。 無論如何,我們必須滿足它。

我知道這不是更多的 RESTful 操作。

我這樣修改:

DELETE http://my-url/{id}
REQEUST BODY
{
    "myProperty1" = 123,
    "myProperty2" = "VALUE",
    ...
}

Swagger 一代對 DELETE with REQUEST BODY 感到憤怒。

我必須切換到

  • 使用 REQUEST BODY 進行 POST 操作
  • 帶有一些 REQUEST PARAMS 的 DELETE 操作

開發團隊喜歡盡可能長時間地呆在 RESTful 環境中。 什么會更好不走調?

我們認為不會受到贊賞的任何其他建議或解決方案。

Swagger 一代對 DELETE with REQUEST BODY 感到憤怒。

是的,沒錯。

DELETE 請求消息中的有效負載沒有定義的語義——RFC 7231

DELETE 是關於將 URI 與其表示分離。 這有點類似於從地圖/字典中刪除鍵或文件系統中的符號鏈接。 它告訴 web 服務器停止為特定的 web 頁面提供服務。

通常很容易弄清楚 DELETE 請求的標識符應該是什么。 它將與您用於通過 GET 請求查找表示的標識符相同。


DELETE 是在網絡域上傳輸文檔時具有語義的操作。

請注意標准中包含的這一觀察:

相對較少的資源允許使用 DELETE 方法——它的主要用途是遠程創作環境,用戶對其效果有一定的指導。

如果您要做的是將帶有有效負載的消息傳遞給您的服務器,以便服務器可以做一些聰明的事情,那么您可能應該使用 POST,而不是 DELETE。

請記住:可以使用 POST 世界范圍內的 web 僅使用GET 和 POST就取得了災難性的成功。


他們想添加一些其他值作為輸入參數,出現在 rekord 中,因為,他們說“在這種情況下刪除操作非常微妙,我們希望確保排除前端的錯誤,傳遞的 id 應該是 id rekord 的值通過”。

這里所尋求的可能是有條件的刪除。 我們有標准化的標頭,驗證器可以使用這些標頭來確定 DELETE 請求和資源的當前 state 是否“匹配”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM