2011-02-09 84 views
2

我目前正在设计一个RESTful接口到现有的基础设施,我正在努力与一个特定的方面。正确RESTful呼叫此资源

我们有用户的集合,可以在/users 访问和该集合的元素可以在/users/1

访问但是每个用户都有的朋友列表,它需要能够访问为好。 users/1/friends是在这里做的宁静的电话吗?由于只涉及一个用户,因此它不符合自己的集合。

任何帮助,将不胜感激

回答

3

就RESTful设计而言,URI可以是任何你想要的。但是,为了确保你的界面可以在REST的访问,你需要做这样的事情:

<user> 
    <name>Bob Smith</name> 
    <link rel="friends" href="/peeps/1/amigos" /> 
</user> 

通过增加间接的额外层,客户端可以发现链接,好友列表,并没有更重要的是客户端的URI是什么。只要你喜欢,你可以改变它。

URIs是服务器的实现细节,客户端不应该与它们耦合。唯一的耦合应该在rels和媒体类型上。

+1

我不同意URIs只是一个实现细节,因为它们实际上是识别你的资源。一个好的RESTful设计应该考虑到这一点,以提高含义和语义。 – 2011-02-09 23:40:39

2

我想说/user/{id}/friends是一个适当的标识符。当然,您也可以使用/users/{id}/friends,但我个人更喜欢区分项目资源和收集资源。

1

我没有看到你的解决方案看到任何问题。作为它代表的URI的完美选择。