最佳实践 - 由两个名称标识的资源的REST URI设计

时间:2013-04-08 09:14:22

标签: xml rest resources uri

REST资源应该由两个名称标识。这是什么最好的做法?

我的想法:

 .../{id1}-{id2}
 .../{id1}/{id2}

id可以包含数字,字母和特殊字符。

第一个解决方案:

如果其中一个ID包含字符-,则会出现问题。在这种情况下,分隔字符不是唯一的。

第二个解决方案:

刚刚.../{id1}将没有资源,这是RESTful吗?

修改

REST资源代表凭据。凭据由提供商名称和用户名标识。

 .../Credentials/<ProviderName>;<UserName>

我不希望在.../Credentials/<ProviderName>显示提供程序的所有凭据(它不适合我的XML结构)。

编辑2:

.../Credentials,所有凭据都将以XML格式显示。凭证在那里表示为XML根元素的子元素。我想创建一个与XML结构相同的REST资源结构。因此,.../Credentials的子资源应该直接是某个凭证(而不是像所有提供者那样的一组凭证)。

2 个答案:

答案 0 :(得分:1)

您的第二个解决方案.../{id1}/{id2}对我说,您在id1id2之间存在层次结构关系,这似乎无法很好地解决您的资源设计问题 正如你所说,标识符引用相同的资源。另一方面,对于您的第一个解决方案.../{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原则:无状态。