我的URI应如何构建为RESTful?

时间:2012-11-30 14:54:03

标签: api rest

我开始为我的项目开发一个公共API,我想把它变成RESTful 我一直在看一些关于某些API(比如twitter)不是真的REST的文章,我想尝试让我的API尽可能的REST(看起来并不那么简单:))

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

  1. GET / movies?token = XXX
  2. GET / users / XXX / movies
  3. 或者其他一切都在一起?

    此外,如果有人可以直接向我介绍这个主题,那么可以帮助我创建我的公共API尽可能的REST,这将是一个很大的帮助!

2 个答案:

答案 0 :(得分: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

希望这会有所帮助。我没有任何好的网络资源,但我建议尝试一下这本书。

答案 1 :(得分:2)

阅读Roy Thomas Fielding的题为Architectural Styles and the Design of Network-based Software Architectures的博士论文,证明是理解REST架构风格的好方法。一开始似乎令人生畏,但它充满了可以帮助您设计更好的API的见解。