Url和Uri的区别

1,355 阅读2分钟

这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战

什么是URI

URI(Uniform Resource Identifier):统一资源标识符,用来唯一的标识一个资源。Web 上可用的每种资源如 HTML 文档、图像、视频片段、程序等都是一个来 URI 来定位的。

URI一般由三部组成
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。

什么是URL
URL(Uniform Resource Locator):统一资源定位符,是 Internet 上用来描述资源的字符串,主要用在各种 www 客户端和服务器程序。采用 URL 可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URL 一般由三部组成
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等。

例如:

http://root@localhost:8080/appname/path?name=errol&password=123#segment

scheme: http
user: root
host: localhost
port: 8080
authority: root@localhost:8080
path: /appname/path
query: name=errol&password=1234
segment: segment

Uri 各个部分可以用相应的 get 方法获取:

String uri = "http://root@localhost:8080/appname/path?name=errol&password=123#segment";
Uri mUri = Uri.parse(uri);
String scheme = mUri.getScheme();
Log.i("URI",scheme);

URL和URI有什么联系
URI 的范围包括 URL 的范围。

你可能觉得URI和URL可能是相同的概念,其实并不是,URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。

只要能唯一标识资源的就是URI,在URI的基础上给出其资源的访问方式的就是URL,这是最简单的总结了。