【发布时间】:2013-01-20 17:06:56
【问题描述】:
我正在实现一个 web 应用程序并希望遵守 RESTfull 设计标准,我的问题是。
给定一个带有集合的类。
人{ id :: 整数 名称::字符串 朋友 :: 人物集合 }
实现 Person 类接口的“最”正确方法是什么:
1.
example.com/REST/persons -> [... {id: '2', name: 'Pete', friends: [1,4,6]} ... ]
example.com/REST/persons/2 -> {id: '2', name: 'Pete', friends: [1,4,6]}
使用persons类的一些搜索功能可以在哪里查找朋友?
或
2.
example.com/REST/persons -> [... {id: '2', name: 'Pete'} ... ]
example.com/REST/persons/2 -> {id: '2', name: 'Pete'}
example.com/REST/persons/2/friends -> [{id: '1', name: 'Joann'},
{id: '4', name: 'Jim'},
{id: '6', name: 'Charlie'}]
集合中的元素在 person 实例中作为字段查找。
我已经看到了这两个方面的实施,但我想遵守标准。
第三种方式刚刚涌向我。
example.com/REST/persons/2 -> {id : '2',
name : 'Pete',
friends: [example.com/REST/person/1,
example.com/REST/person/4,
example.com/REST/person/6]}
因此使接口事件更加 RESTfull —— 客户端现在可以遍历整个接口,而无需了解任何关于实现的信息。
我希望那里有一些输入。
【问题讨论】:
-
您打算使用什么技术来实现您的 REST API?这个选择可以为你做出这个决定。
-
另外,您的问题标题具有误导性,看起来您正在寻找 URL 格式而不是实际实现。
-
@Zepplock:我改了标题
-
@RaySaltrelli:接口不应该独立于实现,我认为这就是拥有 RESTfull 接口的全部意义......
-
理论上是的。但是,如果没有一些妥协,理论通常不会转化为实践。例如,如果您为 REST API 选择 ASP.NET Web API,那么实现选项 2 将相当困难,因为它需要将纯粹风格的 REST 与 RPC 风格的 REST 混合,而 Web API 不喜欢这样。
标签: web-services rest web-applications