URI到底是什么?URL又与之有什么关系?

URI 通用资源标识符

网络上有很多关于 URI 与 URL 之间关系和区别错误的见解,事实上,URI 是一个给程序提供资源标识的框架,任何程序都可以使用它来标识自己的资源。先来看看他的结构

URI = scheme : [[userinfo@]host[:port]/]path[ ?query] [#fragment]

你大概能看懂其中的结构和含义,但请不必深究,实际上URI是一个相对复杂的框架,想更深入了解可以参阅 RFC3986

URI 的设计非常完善,它可以适应很多种类型的应用,很多应用也采用了 URI 作为其标识资源的方式

例如,xml 格式文件应该都熟悉,其中的顶层标签往往会有很多约束条件的配置,看起来像是网址一样,其实,那是 xml 使用了 uri 框架来标识这些约束条件,而xml的解析器有自己实现的 uri 的解析器来识别其内容。其他的例子还有很多,例如安卓系统就也使用URI框架来标识自己的资源

请注意我所使用的框架二字,这意味着它是一个实实在在被实现的程序,而不是一个标准。几乎所有语言的基础类库中都含有 URI 的构造和解构的框架,感兴趣的可以去查一查api文档试一试

当然,根据上述描述不难看出,完全相同的 URI 给不同的程序可能识别出完全不同的含义,因为其含义本身就由程序本身定义

现在你应该可以理解 URI 名字中,“通用”一词的含义了

URL 统一资源定位符

如果理解了上述 URI 的含义,其实要想理解 URL 就不难了。URL是万维网这个分布式系统使用了URI框架作为资源标识符的一个具体实现

具体来说,uri 的 scheme 被万维网定义成了 protocol(获取资源的协议),后面的部分在不同协议下有不同的含义,例如在 http 协议下,query字段被定义为 get 请求中参数的一部分,而在 file 协议下,只启用了 path 字段(file协议只能访问本机的文件系统,path 就是文件路径)。你可以理解为,万维网想通过url来简化通信报文的书写,不同的协议需要其中不同的信息来填空报文

URL 可以说是万维网思想的载体,其比任何东西都更接近万维网的本质

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值