URL和URI的区别

前言
uri和url一直对这个概念很模糊,因此专门写了一个笔记来彻底搞清楚。(先说好这个笔记的主要作用就是为了便于理解和区分uri和url,这也是我个人的理解和总结,如果有不到位的地方可以提出。如果能帮助你区分了这两个概念也算是自己的一个进步了。)

uri
什么是uri?
URI(统一资源标识符)是标识逻辑或物理资源的字符序列,与URL类似,也是一串字符。通过使用位置,名称或两者来标识Internet上的资源;它允许统一识别资源。
uri就类似一个独一无二的身份标识。
准确的说是某个网络资源的特有标识(用来区别于其他资源的独一无二的标识,资源名)
具体什么样的叫做uri呢?我就直接给个java所举的uri的例子:

(First line of HTTP request )HTTP请求的第一行 uri
POST /some/path.html HTTP/1.1 /some/path.html
GET http://foo.bar/a.html HTTP/1.0 /a.html
HEAD /xyz?a=b HTTP/1.1 /xyz

(First line of HTTP request )HTTP请求的第一行 uri
POST /some/path.html HTTP/1.1 /some/path.html
GET http://foo.bar/a.html HTTP/1.0 /a.html
HEAD /xyz?a=b HTTP/1.1 /xyz
从中可以看到,不同请求返回的uri是不一样的。
如果上面的例子还是让你感到困惑,那我就举个更加通俗易懂的。

1.有这样一个需求:
要求找到一本书(书就是资源),这本书在A省份/B市/C区/D街道/xx栋/392-1住户/1号房间/名字叫做《xxx》 (这里就是模拟我们输入网址进行HTTP请求)
那么此时的 《xxx》 这本书 对于 1号房间 来说就是uri
此时的 D街道/xx栋/392-1住户/1号房间/名字叫做《xxx》这本书 对于 A省份/B市/C区 来说就是uri
可以看出uri是不固定的,是相对来说的,具体是什么就看你的参照角度是什么。(不同请求参照角度不一样,所以他们的返回uri有差异)
由此总结:uri是一个标识,用来区别于其他资源的标识。 (相信你对这句话就更能理解了)

url
什么是url?
URL(统一资源定位符)是Internet上资源的地址,可以定义为引用地址的字符串,用于指示资源的位置以及用于访问它的协议。
ok ,理解了uri那么再来说一说什么是url。url就是每次我们输入网址访问某个网站时,浏览器上输入的那一行内容。比如:http://baidu.com 这是一个url,每个链接地址是一个url。

uri和url的关系
uri是url的父级,url是uri的子级。
可能有人就奇怪了,咦?明明是url包含了uri为啥uri反而是父级
请注意,我这里用的是级别来描述,而不是包含。
我没有说url是uri的一部分,而是说是他的子级。
想要理解这个概念,最好的说明就是java的继承关系。url继承了uri。这样来看是不是瞬间就明白了。
因为url继承了所有uri的内容,所以它比uri更加详细,但是uri是它的父级。

有什么作用?
url的作用
url一般是一个完整的链接,我们可以直接通过这个链接(url)访问到一个网站,或者把这个url复制到浏览器访问网站。
使用URL时我们就是一个直接用户的角色,直接访问就完事了。

uri的作用
uri并不是一个直接访问的链接,而是相对地址(当然如果相对于浏览器那么uri等同于url了)。这种概念更多的是用于编程中,因为我们没必要每次编程都用绝对url来获取一些页面,这样还需要进行分割“http://xx/xxx”前面那一串,所以编程的时候直接request.getRequestURI就行了,当然如果是重定向的话,就用URL。

posted @ 2022-05-10 17:48  TrumanPan  阅读(1351)  评论(0编辑  收藏  举报