REST资源应该由两个名称标识。这是什么最好的做法?
我的想法:
.../{id1}-{id2}
.../{id1}/{id2}
id可以包含数字,字母和特殊字符。
第一个解决方案:
如果其中一个ID包含字符-
,则会出现问题。在这种情况下,分隔字符不是唯一的。
第二个解决方案:
刚刚.../{id1}
将没有资源,这是RESTful吗?
修改
REST资源代表凭据。凭据由提供商名称和用户名标识。
.../Credentials/<ProviderName>;<UserName>
我不希望在.../Credentials/<ProviderName>
显示提供程序的所有凭据(它不适合我的XML结构)。
编辑2:
在.../Credentials
,所有凭据都将以XML格式显示。凭证在那里表示为XML根元素的子元素。我想创建一个与XML结构相同的REST资源结构。因此,.../Credentials
的子资源应该直接是某个凭证(而不是像所有提供者那样的一组凭证)。
答案 0 :(得分:1)
您的第二个解决方案.../{id1}/{id2}
对我说,您在id1
和id2
之间存在层次结构关系,这似乎无法很好地解决您的资源设计问题
正如你所说,标识符引用相同的资源。另一方面,对于您的第一个解决方案.../{id1}-{id2}
,您可以使用;
而不是-
来避免隐含层次结构,而不存在
正如Restful Web Services所引用的那样,我将继续这样做:
.../{id1};{id2}/
答案 1 :(得分:1)
REST API必须是超文本驱动的,所以不要在URL模式上浪费时间,因为它们不是RESTful。 URL模式暗示客户端和服务器之间的紧密耦合;简单地说,客户端必须知道URL的外观并且能够构建它们。
另见这篇文章:
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
注意凭据;您似乎在客户端和服务器之间保持状态,这也违反了REST原则:无状态。