理解web世界的基本概念

uri包含参数吗(一文搞清楚URL和URI的区别到底是什么)(1)

作为一名开发,你肯定已经无数次听到过URL这个名次。也许也在某些场合碰到过URI这个东西。是否在有些时候你会想要了解这两个有什么关系?它们之间有什么区别吗?有时候这两个概念的使用是可以互换的,但细究下去毕竟是有所区别。在对比它们之间的区别之前,让我们把它们放到放大镜之下,具体了解一下这两个老朋友各自的定义是什么。

什么是URL?

Uniform Resource Locator或者简称URL— 顾名思义 — 就是对于某种web资源的引用,并且包含了如何获取该资源的方式。 最常见到的场景就是指一个网站的地址,也就是你在浏览器地址栏见到的那个东西。

uri包含参数吗(一文搞清楚URL和URI的区别到底是什么)(2)

一个URL由如下几个部分构成:

一个URL的组成部分可以参考下面的图示:

uri包含参数吗(一文搞清楚URL和URI的区别到底是什么)(3)

什么是URI?

接下来我们来了解一下究竟什么是URI。与URL相似的部分是,Uniform Resource Identifier同样定义了资源的标识。但不同点在于URI通常不会包含获取资源的方式。

ISBN作为书目的资源定义就是一种URI,但不是URL。它清楚地为每一种出版的书目定义了唯一的数字编号,但没有包含任何如何获取这种资源的方法。

因此我们可以这样总结:URI是URL的超集,URL是URI的子集。每一个URL都必定也是一个URI。

区别图示

为了阐明它们之间的关系,可以参见下面的图示

uri包含参数吗(一文搞清楚URL和URI的区别到底是什么)(4)

所以实际上URL就是一种特定的URI,这种URI还含有如何获取资源的信息。如果一定需要一句话来总结本文的主要内容,那么RFC3986中的这句定义一定是最合适的:

The term “Uniform Resource Locator” (URL) refers to the subset of URIs that, in addition to identifying a resource, provide a means of locating the resource by describing its primary access mechanism.

总结

作为开发者会发现我们有无数的英文缩写要了解和记住。但一旦能够更加深入地了解组成互联网基石的核心概念,就会发现上层概念越来越简单,并且由于对于底层概念的了解,实际工作质量也可能越来越高。

,