一个不是URL的URI示例是什么?

48

有人曾经多次向我解释过,所有URL都是URI,但并非所有URI都是URL。能否给出一个例子,说明某个东西是URI但不是URL?


1
"data uri"是URI的一个例子,它不是URL。例如:data:,Hello%2C%20World! - Alireza Mirian
很好的问题。RFC 3986,第1.1.3节。 给出了一个定义,但缺少示例。 (以防链接失效:“_术语“统一资源定位符”(URL)是指URI的子集,除了标识资源外,还提供了一种通过描述其主要访问机制(例如,其网络“位置”)来定位资源的方法。”_) - toraritte
7个回答

27

以下示例来源于这里(该网站还有差异的描述):

URL     http://www.pierobon.org/iis/review1.htm
URN     www.pierobon.org/iis/review1.htm#one
URI     http://www.pierobon.org/iis/review1.htm.html#one

13
我感觉这样是不对的。这里的URI示例难道不也是URL吗?它明确地定位并标识了一个资源。 - romnempire
1
据我所知,所有这些示例都是URI,也是URL! - gyousefi
1
www.pierobon.org/iis/review1.htm#one不是一个URN,因为它不以urn:开头,并且它并不是为了以持久的方式命名资源,即使服务器上的文件结构发生变化。 - undefined
经典SO:声誉很高!点赞!这个答案缺乏任何背景或解释,而且示例也不正确。它链接到一个有类似问题的网站。 - undefined

12

1
我认为ISBN与Web标准无关。 - Hlung

5

5

统一资源名称(URN)是一个URI,它在特定的命名空间中通过名称标识资源。 URN可用于谈论资源,而不涉及其位置或如何访问它。例如,URN urn:isbn:0-395-36341-1就是一个URI。

来源:维基百科:http://en.wikipedia.org/wiki/Uniform_Resource_Identifier


4

XML模式通常与URI标识符相关联,尽管它们可能格式相似,但不能保证其中有任何内容,因为它不是URL。

如果您必须验证XML文件,则必须能够识别正确的XML模式。在成功验证可以产生任何有用的结果之前,必须在内容和模式作者之间共享一种识别手段。URI可以很好地满足这个需求,与其他任何东西一样。请记住,为了使用XML文件,并不一定需要模式。因此,它不需要是通用可定位或可用的,只需要可识别即可。URI的语义避免了资源必须被定位“于此”的暗示,这是一个合理的理由。这样的细节与识别任务无关。

模式发布者通常会基于自己拥有的URL来构建URI。我可以想象有许多原因可以这样做,但其中一个原因是可以避免在中间人没有的情况下出现命名冲突。当使用这种约定时,很难抵制将定义托管在URI指向的位置,如果它是URL的话。虽然这并非必要,但我认为这样做标志着一种受欢迎的努力,并且是良好信息架构的一个例子,但这个事实与URI填充的需求无关。


3

为了测试Java中的URI ←→ URL转换,我使用以下示例来测试单元测试中的异常失败:

  • "_ " — 非有效的URI字符串
  • "data://valid-uri" — 有效的URI,但不是有效的、格式错误的URL(从URI#toURL抛出MalformedURLException)。
  • "valid-uri" — 有效的URI,但不是有效的、非绝对的URL(从URI#toURL抛出IllegalArgumentException)。
  • "http:// _" — 有效的URL,但不是有效的、格式错误的URI(从URL#toURI抛出URISyntaxException)。

这可能不是符合RFC规范的完美答案,但这些都是适用于Java的工作示例。


1

一个常见的例子是URN,它是格式为urn:namespace-id:resource-id的URI。根据维基百科:

在1997年RFC 2141中定义的URN旨在作为持久的、位置无关的标识符,允许将命名空间简单地映射到单个URN命名空间中。这样一个URI的存在并不意味着已经有了被标识资源的可用性,但是这样的URI需要保持全局唯一和持久,即使该资源不存在或变得不可用。

资源引用的两种风格(URL和URN)后来被合并到URI的概念下,但它们仍然被认为是具有不同目的的(强调我的):

统一资源名称(URN)可以与人的姓名相比,而统一资源定位符(URL)可以与他们的街道地址相比。换句话说,URN标识一个项目,而URL提供了一种查找它的方法。


虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅链接的答案可能会失效。- 来自审查 - Vini.g.fer
@Vini.g.fer 很好的观点,现在已经整理干净了。不过我必须承认,这个问题本身几乎是在恳求只有链接的答案 - 也许这是一个问题质量的关注点? - Jeffrey Hantin

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