【问题标题】:Best practice - REST URI Design for resource identified by two names [closed]最佳实践 - 由两个名称标识的资源的 REST URI 设计 [关闭]
【发布时间】:2013-04-08 09:14:21
【问题描述】:

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

我的想法:

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

id 可以由数字、字母和特殊字符组成。

第一个解决方案:

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

第二种解决方案:

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

编辑:

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

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

我不想在.../Credentials/&lt;ProviderName&gt; 显示提供者的所有凭据(它不适合我的 XML 结构)。

编辑 2:

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

【问题讨论】:

  • 您能否详细说明 2 个名称的含义以及这些 ID 代表什么?如果您提供一个示例以提供更多上下文会更好。
  • 编辑了我最初的帖子。
  • 如果不是提供者的所有凭据,您能否更具体地说明您想为最后一个 url 读取的内容?
  • 再次添加了一些信息。

标签: xml rest resources uri


【解决方案1】:

您的第二个解决方案 .../{id1}/{id2} 对我来说说您在 id1id2 之间存在层次关系,这似乎不能很好地解决您的资源设计,因为两者 正如您所说,标识符引用相同的资源。另一方面,对于您的第一个解决方案.../{id1}-{id2},您可以使用; 而不是- 以避免暗示不存在的层次结构 正如Restful Web Services 中所引用的,所以我会这样做:

.../{id1};{id2}/

【讨论】:

  • 注解 @Path("{id1};{id2}") 似乎不适用于泽西岛。
【解决方案2】:

REST API 必须是超文本驱动的,所以不要在 URL 模式上浪费时间,因为它们不是 RESTful。 URL 模式意味着客户端和服务器之间的紧密耦合;简单地说,客户端必须知道 URL 的样子并有能力构造它们。

另见这篇文章:

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

关于凭据的注意事项;您似乎在客户端和服务器之间保持状态,这也违反了 REST 原则:无状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2020-03-21
    相关资源
    最近更新 更多