簡體   English   中英

如果 http 方法和實現的 CRUD 操作不同,REST api 會發生什么?

[英]What will happen to the REST api if the http methods and the implemented CRUD operations are different?

引用REST文檔,

REST 指南建議在對服務器進行的特定類型的調用上使用特定的 HTTP 方法(盡管從技術上講可能違反此指南,但強烈建議不要這樣做)。

我想知道如果我違反了這個准則會發生什么? 因為最終取決於我在 API 中放入什么功能。 我什至試過這個。 我使用了http方法get並在其中實現了刪除功能。 令我驚訝的是,它工作得很好。 我希望得到一些警告或錯誤,但一無所獲。

那么,這是否意味着REST只是要遵循的標准,而不遵循它,就不會破壞我的 API? 我的 API 不再寧靜了嗎? 它是什么?

請原諒我的詢問的幼稚。 我在這方面很新。

背景:REST 的權威定義是Fielding 的論文 REST 不是標准,而是一種架構風格

HTTP 是一種標准化的應用程序協議。 HTTP 是萬維網的支柱之一,是受 REST 架構風格影響參考應用程序。

因此,我們擁有的是一個描述 HTTP 消息含義的標准(例如,請求方法令牌是請求語義的主要來源,取決於請求提供的其他元數據的進一步說明)。 因為我們有這個標准,所以我們可以構建很多通用組件(如 Web 瀏覽器或緩存),因為它們理解請求的廣泛語義,因此可以執行智能操作。

我使用了 http 方法 get 並在其中實現了刪除功能。 令我驚訝的是,它工作得很好。

是的,確實如此。 直到它沒有。

這是 Fielding 在 2002 年撰寫的關於該主題的文章

HTTP 不會試圖要求 GET 的結果是安全的。 它所做的是要求操作的語義是安全的,因此,如果發生任何導致財產損失(金錢、BTW、為了這個定義,被認為是財產)。

注意:“執行錯誤”位。

廣泛的問題是: GET 的語義是安全的,因此通用組件可以在任何方便的時候獲取資源——例如,當像谷歌一樣爬網時,或預取一個網頁進入瀏覽器,以減少用戶點擊鏈接時的延遲。

允許通用組件假設您的資源以與網絡上其他所有內容相同的方式理解消息,這允許我們擁有更智能的通用組件,這是統一接口約束的重點。

如果我們獲取了您的資源,而您刪除了某些內容,因為這是您在處理 get 請求時所做的事情,而損壞是該刪除的后果……那是您的錯。

暫無
暫無

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

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