我已经阅读了很多关于URI、URL和URN的文章,但我不了解实际示例中的差异。
你能举几个URI和URL的例子吗?
我认为http://stack.com/first/index.html?submit=yes&action=go#second
是 URI,而不是 URL,是吗?
然后http://stack.com/first/index.html
是 URL,因为它不是那么具体?
这个图像是正确的吗?
以下是J.Webber、S.Parastatidis、I.Robinson引用的REST in Practice 中的一句话,它抓住了差异的本质:
URL 和 URN 是 URI 的特殊形式。
标识可以访问资源的机制的URI通常称为URL。HTTP URI 是 URL 的示例。
如果 URI 将urn 作为其方案并遵守RFC 2141和RFC 2611的要求,则它是URN。URN 的目标是为资源提供全球唯一的名称。
顺便说一下,这本书的 ISBN 是ISBN-13:978-0596805821。如果您单击 Amazon.com 的链接为什么 ISBN 很重要,您将看到工具提示:
此条形码编号可让您验证您获得的图书版本是否完全正确。
这是命名空间中的 URN(和定义的 URI)的示例urn:isbn
,它不假定任何给定的机制来检索此资源,但确实识别它。
如果你有一些在线书籍的链接,例如 PDF 格式的,那将是一个 URL(和定义的 URI),看起来像这样:
https://www.somewebsite.org/books/RestInPractice.pdf
不,图像不正确。您的两个示例都是 URI 和 URL。
每个 URL 都是一个 URI。
每个 URN 都是一个 URI。
根据 W3C 的URI、URL 和 URN:Clarifications and Recommendations 1.0(也由 IETF 作为RFC 3305发布):
在经典视图中,如果 URI 指定了资源的位置,则它是 URL,如果指定资源的名称,则 URI 是 URN 。
在当代看来,进行这种区分是不相关或无用的。
可能会出现混淆,因为术语“URI”和“URL”经常作为同义词使用。
URI 的 Internet 标准STD 66(当前映射到RFC 3986)建议:
未来的规范和相关文档应该使用通用术语“URI”而不是更严格的术语“URL”和“URN”
标准化术语 URL。URI 和 IRI 只是令人困惑。在实践中,两者都使用单一算法,因此保持它们不同对任何人都没有帮助。
urn
,并且仅在您需要具体时才使用。