基於以下問題REST Content-Type: Should it be based on extension or Accept header?中的信息,我知道自定義URI或指定Accept Headers是'可接受'(雙關語)方法,用於REST-ish Web服務來確定客戶端的響應格式。對於REST內容格式協商,使用URI vs Accept Headers有哪些優點和缺點?
但是,很多大牌似乎都將自定義URI方法與它們的API一起使用。一種比另一種更強的優勢是什麼?
基於以下問題REST Content-Type: Should it be based on extension or Accept header?中的信息,我知道自定義URI或指定Accept Headers是'可接受'(雙關語)方法,用於REST-ish Web服務來確定客戶端的響應格式。對於REST內容格式協商,使用URI vs Accept Headers有哪些優點和缺點?
但是,很多大牌似乎都將自定義URI方法與它們的API一起使用。一種比另一種更強的優勢是什麼?
在REST中,URI僅用於標識資源。內容協商用於標識表示格式。這是你傳統的關注點分離。使用URI標識表示格式時,您正在混合這些問題。
除了混合問題之外,我的觀察結果是,當使用基於URI的方法時,人們通常知道約定,並依靠URI構建而不是超文本來導航。這增加了耦合性,並且如果服務器想要更改URI結構可能會導致問題。
說到這裏,URI方法有一些好處,即方便性。在開發過程中,您可以啓動瀏覽器,只需將其輸入地址欄(「example.com/foo.json」),即可輕鬆查看服務器的響應情況。當依靠100%的內容協商時,它有點難度,你必須依賴插件或cURL,任何可以操縱標題的東西。
「......你必須依賴插件或cURL,任何可以操縱標題的東西。」這就是爲什麼我總是在我的HTTP應用程序中包含http://www.aminus.net/wiki/Okapi實例... – fumanchu 2011-06-04 16:47:04
不錯!我沒有看到。看起來很有幫助。 – bcarlso 2011-06-05 17:04:14
還有一些插件,如[REST客戶端](https://addons.mozilla.org/en-us/firefox/addon/restclient/),可用於測試REST應用程序。 – MatrixFrog 2011-06-06 17:41:16