2

我开始为我的项目开发一个公共 API,我想让它成为 RESTful。
我不断看到一些关于某些 API(如 twitter 的)如何不是真正 RESTful 的文章,我想尝试让我的 API 尽可能地 RESTful(似乎它不是那么简单:))

目前我正在考虑一件事,假设有两个资源,用户和电影,每个用户都有一个电影列表,我想创建一个 REST api 来获取当前连接用户的所有电影,什么是正确的设计方法?
(XXX 是某种身份验证令牌 - 我还没有决定要实现什么身份验证)

  1. 获取 /movies?token=XXX
  2. 获取 /users/XXX/电影

或者可能是其他东西?

此外,如果有人可以指导我阅读有关该主题的好书,这将有助于我创建尽可能 RESTful 的公共 API,这将是一个很大的帮助!

4

2 回答 2

4

我真的很喜欢 Leonard Richardson 的 Restful Web Services。他解释了 REST,一些网站如何滥用它,如何正确使用它,何时使用查询字符串与将信息放在 URI 路径中。他还介绍了身份验证,但他对这个主题有点简短。他花了很多时间解释为什么 REST 比 SOAP 更好——我喜欢它,但其他评论者似乎觉得它过分了。他在他的大部分示例中都使用了 Ruby/Rails。

在你的两个例子中,我更喜欢“GET /users/XXX/movies”而不是第一个。使用查询字符串有利于搜索或可选参数。像 google.com/?q=batman 或 /users/XXX/movies?page=2 这样的东西。由于您正在查看特定用户的电影,因此 URI 与该结构匹配是有意义的,而选项 2 就是这样做的。

有些网站并不是真正的 RESTful,因为它们提供了类似的方法

GET /GetUser?token=XXX
GET /SaveUser?token=XXX&name=YYY

一个真正的 RESTful 服务将遵循现有的 HTTP 命令并对资源而不是函数进行操作。根据这本书,如果你遵循 HTTP 协议,你的服务名称中通常不需要“get”或“save”之类的词——它们是由 HTTP 提供的。

GET /user/XXX
PUT /user

希望这可以帮助。我没有任何好的网络资源,但我建议试试那本书。

于 2012-11-30T15:21:16.753 回答
2

阅读 Roy Thomas Fielding 的博士论文,题为“架构风格和基于网络的软件架构的设计”,被证明是了解 REST 架构风格的好方法。起初看起来令人生畏,但它充满了洞察力,可以帮助您设计更好的 API。

于 2012-11-30T18:23:58.257 回答