如何理解URI,URL,URN?

在Web领域,我们常见三个专业词汇URI,URL,URN,在这里我将对这3个概念进行分析,理清其内在逻辑。

URL

URL是统一资源定位符的缩写,它对网络中的资源的定位提供了一种统一方案。它的语法格式:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fragment>

URN

URN是统一资源名称的缩写,它对网络中的资源的名称提供了一种统一方案。它要求全球唯一,并在资源不存在或不再可用时依然保持不变。它的格式如下:

"urn:" <NID> ":" <NSS>

URN基于这样一种想法:就像人可能搬家一样但人的姓名一生几乎不会改变,网络中的URL是不会持久的,网络资源也可能被移动,导致URL失效,如果给资源也采用不会改变的名称URN,这样就能避免URL的失效问题。要实现这一点需要采取某些策略实现URN与实际资源的映射,但这里可以忽略。

20多年过去URN似乎并没实用价值,这是很正常的,技术发展中很多技术标准都沉默于历史

URI

URI是统一资源标志符的缩写,它是对URL和URN的统一化抽象,URI为识别资源提供了一种简单且可扩展的手段。其格式如下:

      URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

      hier-part   = "//" authority path-abempty
                  / path-absolute
                  / path-rootless
                  / path-empty

总结

本篇分析了URL,URN,URI的具体定义,理解三者的关键在于,理解"location","name","identifier"三个词的内涵。

由于URN没有实用价值,URL表示的是抽象概念,作为开发者的我们,对URI和URL的区别通常只在于命名,我的看法是:

  • 根据接口来命名,要什么,给什么
  • 在Web中通常需要的是具体的资源位置,因此一般使用URL
posted @ 2018-08-25 21:29  redreampt  阅读(328)  评论(0编辑  收藏  举报