URL知识学习

一、URL、URI和URN三者之间的区别

起源

这三个缩略词是Tim Berners-Lee在一篇名为RFC 3986: Uniform Resource Identifier (URI): Generic Syntax的文档中定义的互联网标准追踪协议。

统一资源标识符(URI)提供了一个简单、可扩展的资源标识方式。URI规范中的语义和语法来源于万维网全球信息主动引入的概念,万维网从1990年起使用这种标识符数据,并被描述为“万维网中的统一资源描述符”。

区别

首先我们要弄清楚一件事**:URL和URN都是URI的子集**。

换言之,URL和URN都是URI,但是URI不一定是URL或者URN。为了更好的理解这个概念,看下面这张图片。


通过下面的例子(源自 Wikipedia),我们可以很好地理解URN 和 URL之间的区别。如果是一个人,我们会想到他的姓名和住址。

URL类似于住址,它告诉你一种寻找目标的方式(在这个例子中,是通过街道地址找到一个人)。要知道,上述定义同时也是一个URI。

相对地,我们可以把一个人的名字看作是URN;因此可以用URN来唯一标识一个实体。由于可能存在同名(姓氏也相同)的情况,所以更准确地说,人名这个例子并不是十分恰当。更为恰当的是书籍的ISBN码和产品在系统内的序列号,尽管没有告诉你用什么方式或者到什么地方去找到目标,但是你有足够的信息来检索到它。

关于URL:

URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。

关于URN:

URN是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。

这是一个URI:http://bitpoetry.io/posts/hello.html#intro

我们开始分析

http://: 是定义如何访问资源的方式

bitpoetry.io/posts/hello.html:是资源存放的位置

#intro:资源

*URL*是URI的一个子集,告诉我们访问网络位置的方式。在我们的例子中,URL应该如下所示:http://bitpoetry.io/posts/hello.html

*URN*是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式,如下所示:bitpoetry.io/posts/hello.html#intro

就是这样。现在你应该能够辨别出URL和URN之间的不同。

如果你忘记了这篇文章的内容,至少要记住一件事:URI可以被分为URL、URN或两者的组合。如果你一直使用URI这个术语,就不会有错

二、url规范

模式规范

强制:统一采用小写,并以中划线(-)作为分隔符,不得 进行驼峰式的大小写混合,不得 采用其它分割符。

比如:http://www.example.com/green-dress.html

URL 的生成与拼接

建议: 采用 UriComponent 相关的组件,而非字符串拼接,可以避免较多的不规范及编码问题,如下所示:

UriComponents uriComponents = UriComponentsBuilder.fromUriString("http://www.example.com/query")                    .queryParam("fromUserCode", config.getVmsFromUserCode())                    .queryParam("toUserCode", account)                    .queryParam("msgText", content); log.info("URL:{}", uriComponents.toUriString());


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (原话)谈谈对HTTP协议的理解:超文本传输协议,应用于OSI网络模型中的应用层,是用于服务器传输超文本到本地浏览...
    24_yu阅读 925评论 0 1
  • URL和URN都是URI的子集 URL和URN都是URI,但是URI不一定是URL或者URN 关于URL: URL...
    以乐之名阅读 5,847评论 0 9
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,374评论 0 3
  • web内容都是存储在web服务器上的,其所使用的是http协议,因此常被称为http服务器。客户端想服务器发送ht...
    海之蓝boy阅读 1,006评论 2 18
  • 做人的底线简单说,是立世的最低标准;尊严是处人对于自己而言,不可逾越的红线。 孙子兵法总结为五字,“...
    佛爷大容阅读 276评论 0 1