前言
在写 Java EE 中的注解 时,提到了 URI,本文将介绍 URL 和 URI 的概念与区别。
摘要
通过下图可以知道 URI(Uniform Resource Identifier 统一资源标识符)其实包括 URL(Uniform Resource Locator 统一资源定位符)和 URN(Uniform Resource Name 统一资源名称),可以说 URI 同时具备 locator 和 name 特性的一个东西。URN 作用就好像一个人的名字,URL 就像一个人的地址。
换句话说:URN 确定了东西的身份,URL 提供了找到它的方式。
URI:统一资源标识符
URI(Uniform Resource Identifier)翻译成中文就是统一资源标识符。RFC2396 分别对这 3 个单词进行了如下定义:
- Uniform:规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式。另外,加入新增的 协议方案(如 http:或 ftp:)也更容易。
- Resource:资源的定义是“可标识的任何东西”。除了文档文件、图像或服务(例如当天的天气预报)等能够区别于其他类型的,全都可作为资源。另外,资源不仅可以是单一的,也可以是多数的集合体。
- Identifier:表示可标识的对象。也称为标识符。
协议方案是指访问资源所使用的协议类型名称。采用 HTTP 协议时,协议方案就是 http。除此之外,还有 ftp、mailto、telnet、file 等。标准的 URI 协议方案有 30 种左右,由隶属于国际互 联网资源管理的非营利社团 ICANN(Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)的 IANA(Internet Assigned Numbers Authority,互联网号码分配局)管理颁布。
URI 是一个用来标识抽象或物理资源的紧凑字符串,通过这个标识可以访问一个唯一的资源。
这里的“资源”表示的是 web 上每一种可用的资源,如 HTML 文档、图像、视频片段、程序等,它们可以都由唯一的一个 URI 字符串进行标识,具体的标识规则由我们自己确定。放到现实中,资源可以类比一个独一无二的人、动物、物体,而 URI 类似于身份证或者 DNA(反正是要独一无二的,它可以使任何规则)。
URL:统一资源定位符
URL(Universal Resource Locator),即生活中熟知的统一资源定位符。
URL 一个通过位置来标识资源的字符串,是目前网络资源的主要访问机制的。
一个标准的 URL 必须包括:protocol、host、port、path、parameter、anchor,例如 https://www.essesoul.top/index.xml
,这样通过该资源的位置可以以定位该资源。
可以看出来,URL 是通过位置来确定一个资源的,因此 URL 是 URI 的子集,或者说 URL 是 URI 的一种实现方式。