基于以下问题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