1

我有两个 RESTful API 设计问题。假设我有一个水果摊网络应用程序。我想返回有关我携带的所有水果的信息以及这些水果的数量,我这样做:

http://myfruitstand.com/fruits

问题 1: 如果我有 10 个橙子,那么我认为我可以通过以下方式获取有关特定橙子的信息:

http://myfruitstand.com/fruits/oranges/3

但是上面的 url 是 RESTful 的吗——我不需要在“fruits”和“oranges”之间添加一个 id 来符合 REST 标准吗?或者这个带有“fruits”的网址是否紧跟“oranges”子类可以吗?

问题 2: 同样,如果我想有一个关于我的橙子(不是特定的橙子)的论坛,我可以把它放在这里:

http://myfruitstand.com/fruits/oranges/comments

同样,上面的 url 是 RESTful 的吗,因为“oranges”和“comments”之间没有 id(当然,这里的 id 意味着讨论特定的橙色,我不希望这样)?在这里,没有“橙子”后面紧跟“评论”的子类理性。

在此先感谢,查克

4

4 回答 4

1

我自己一直在问关于 RESTful 风格的问题。但我对此的看法是:

如果是水果店,是不是暗指“水果”?简单地说:

/橙子/{id}

或者:

/水果/{id}

这只是一种橙色的水果。

/fruits?type=orange 可以返回一个橘子列表

于 2011-02-20T22:41:20.667 回答
1

It would be more RESTful to construct by resource-collection/id pairs, e.g. /fruits/:id1/items/:id2, where id1 = orange, id2 = 3

/fruits/orange/items/3

Then the answer to the second question would be also correct if you lose the 's' on oranges, as you are treating orange as an instance of a resource and not a resource collection.

/fruits/orange/comments

e.g. slide 48 of http://www.slideshare.net/Wombert/phpnw10-designing-http-services-and-restful-interfaces

于 2010-12-20T14:21:20.810 回答
0

是的,只要它们是确定性的,所有 url 都是宁静的。Restful 更多的是关于您正在使用的 http 方法(例如 DELETE 来删除,POST 来编辑,GET 来阅读,......)。

于 2010-12-20T14:16:04.653 回答
0
  1. 从您对用法的解释中,我不相信您需要水果资源的 id。
  2. 同样,第二个也不需要 id。

只要您的 url 为您的对象组织建模,那么我相信您就可以开始了。

另外,我个人的感觉是,如果您发现需要稍微偏离任何规范以满足您的应用程序需求的情况,那么这样做是合理的。不要让坚持这种“模式”干扰完成工作。例如,在 RESTful 上下文中,有时您执行与某些对象相关的操作,这些对象并没有明确属于 DELETE/PUT/POST/GET 动词。你是否为了保持完美的 RESTfulness 把这些东西塞进去?

我现在躲在桌子后面,以免被现在不可避免地殴打我的 RESTful 大师/宗教家打昏 :)

于 2010-12-20T14:20:55.410 回答