RESTful服务中的URL中的URN,构建URL路径

3

我们正在创建一个RESTful服务,试图决定URL路径格式。

我们有一个URN用于在整个组织中唯一标识资源,我们正在构建Rest服务以通过HTTP内容协商以请求者所需的格式提供该资源。

我的问题是,我们应该如何形成服务的URL路径,哪种更合理。

http://{domain}/{somethinghere}/{full urn string}
or
http://{domain}/{somethinghere}/{urn-part-1}/{urn-part-2}/{urn-part-3}
1个回答

3

我也有同样的问题!在我看来,我会使用完整的URN字符串。

http://{domain}/{somethinghere}/{full urn string}

这是一个优雅、半合法的功能,具有用户友好的特点,使将URN字符串复制粘贴到您的URL中变得更加容易。以下是我完成的一些作业:
有一个旧的实验性RFC 2169,建议输入完整的urn字符串,而不是%quoting冒号(:)。这很干净、优雅...而且在野外有冒号的例子,例如:
http://en.wikipedia.org/wiki/Talk:Buckminster_Fuller

我的一个担忧是(有人能否确认或否认这一点?)某些浏览器、服务器、框架或工具可能会尝试在冒号上进行引用或其他方式的限制,因为它们可能对冒号代表的内容做出各种假设。

既不RFC 1630也不其他RFC明确指出冒号是否可以在http方案的路径中使用。然而,需要注意的是!冒号的位置很重要,以确定URL是否是绝对的(这在RFC 1630的“部分(相对)形式”一节中有规定)。如果冒号出现在斜杠(/)之前,则URL是绝对的。(顺便说一下,RFC中将冒号称为“保留”分隔符,但其预期的保留用途是清晰的,并不排除在路径中使用。)

我希望听到更多关于这个问题的想法...(而不仅仅是采取轻松的斜杠编码所有内容的方法,因为那并不够优雅。)


我尝试了第一种方式,在URL中使用“:”,但IIS拒绝了它。在查询字符串中允许使用它,但不是路径的一部分。这是我的发现。可能是因为我们正在使用无扩展名的URL。我们目前正在将其拆分到URL中。 - Eatdoku
这是我的担忧...不一致的':'处理非常不幸,因为它强制在URN和URL之间存在不兼容性。我希望看到':'这个特定问题得到澄清,以便我们可以看到更多的URN嵌入到URL中。与此同时,我想你可以使用以下方式:http://{domain}/{somethinghere}/?urn={full urn string}。 - David Baird
3
如果 ?urn={full urn string} 不合适的话,您使用 '/' 分隔符的想法并不错。我考虑过自己使用 '/' 分隔符... 但目前为止,由于我的完美主义本性,我一直在把我的工具拼凑在一起,以强制支持 ':'。 - David Baird

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接