在定义变量时,面对URI和URL两个词我总是很疑惑,到底用哪个词才是正确的命名?
于是我进行了一番搜索,在参考n篇文章后,写下这篇笔记。

首先引用百度百科关于URI和URL的定义URI/URN/URL
统一资源标识符(Uniform Resource Identifier,URI)是一个用于标识某一互联网资源名称的字符串。
统一资源名称(URN)是统一资源标识(URI)的历史名字,它使用urn:作为URI scheme。
统一资源定位系统(uniform resource locator,URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。

URI和URN/URL的关系

URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。

20201123140133

图片来自URL和URI的区别

URL包含以下信息:

  1. 用于访问资源的协议
  2. 服务器的位置(无论是通过IP地址还是域名)
  3. 服务器上的端口号(可选)
  4. 资源在服务器目录结构中的位置
  5. 片段标识符(可选)

例如:

1
https://www.shiming.online/blog/1739

上面的链接包含了协议,域名或程序名组成的资源地址

回过头来,再研究一下URI和URL的区别:

举个例子:给出一个地址:shiming.online,它是URI,但他是URL吗?很明显不是,因为系统可能对很多协议或者端口作出反应。拿我设置的http和https访问方式举个例子,当你访问http://shiming.online,我的网站会将你重定向到https://www.shiming.online,而当你直接访问https://www.shiming.online时,系统不会做出任何反应。

再举个例子:有一个人,他的名字叫张三,这是他的URI,他的地址是四川省成都市武侯区xxx,这是他的URL。通过这个地址,你能找到张三,能知道他的个人信息;而只通过张三这个名字,你能找到很多个张三,有北京的张三,有广州的张三,有成都的张三,他们的URL是不一样的。

从上可知:URL是统一资源定位器,用于标识资源;URI提供了更简单和可扩展的标识资源的方法。

总结一下:

  • URI 标记了一个网络资源,仅此而已;URL标记了一个 WWW 互联网资源(用地址标记),并给出了他的访问地址。
  • URI包括URL和URN两个类别,URL是URI的子集,所以URL一定是URI,而URI不一定是URL。
  • 让URI能成为URL的是那个 “访问机制”,“网络位置”。e.g. http:// or https://

回归到最初的问题:变量命名时,什么才是对的?答案当然是URI,用 URI ,你通常技术上是正确的,URL 可不一定。

目前 HTTP 规范已经不使用 URL,而是使用 URI 了

HTTP relies upon the Uniform Resource Identifier (URI) standard[RFC3986] to indicate the target resource (Section 5.1) andrelationships between resources.

谷歌翻译如下:

HTTP依赖于统一资源标识符(URI)标准[RFC3986]指示目标资源(第5.1节)和资源之间的关系。

参考

URL和URI的区别
URL和URI之间的区别是什么
转!!URL 和 URI 区别