在定义变量时,面对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提供查找该事物的方法。
图片来自URL和URI的区别
URL包含以下信息:
- 用于访问资源的协议
- 服务器的位置(无论是通过IP地址还是域名)
- 服务器上的端口号(可选)
- 资源在服务器目录结构中的位置
- 片段标识符(可选)
例如:
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://
orhttps://
。
回归到最初的问题:变量命名时,什么才是对的?答案当然是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节)和资源之间的关系。