4

我即将开始为客户的网站开发 REST API,并且我一直在做一些研究。我在 API 的黄金标准上遇到了这个有用的问题。

在阅读这篇文章之前,我曾考虑使用 Flickr API 作为参考点。然而,对上述问题的评论让我三思而后行:

The Flickr API is particularly hilarious, for example. It advertises itself as RESTful and yet is nothing of the sort!内森

我对 Flickr API 不是 RESTful 的原因以及这些非 RESTful 元素的影响特别感兴趣。

4

2 回答 2

6

这个 API 被认为是 unRESTful 的另一个重要原因是它没有使用“超文本”。超文本只是使用链接(和链接关系)在您的应用程序中移动客户端,而不是要求它们以编程方式“构建”一个 URI。

这不是 RESTful:

获取 / 收集
200 确定

<collection>
  <item>
    <id>1</id>
  </item>
</collection>

这是 RESTful:

获取 / 收集
200 确定

<collection>
  <item href="/collection/1" />
</collection>

后一种 RESTful 方法的好处是您的服务器可以将项目资源移动到任何它想要的位置 - 例如将其移动到 /item/1 - 更改 href 值,并且知道所有客户端都将管理更改。前一种方法无法做到这一点,因为服务器无法保证所有客户端都会确认更改;这是所谓的客户端/服务器耦合的一部分,并且在您的 API 有很多客户端的大型分布式系统中,您希望将其保持在最低限度 - 这是 REST 的主要目标。

Roy Fielding 将 REST 的这一部分称为“超文本约束”,他为此写了以下博客文章:

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

于 2010-02-05T11:04:57.867 回答
4
于 2010-02-05T09:46:44.657 回答