URI和URL及URN的区别

对于URL,大家都比较熟悉,其他两个词就比较陌生了。URI、URL和URN是识别、定位和命名互联网上的资源的标准途径。1989年Tim Berners-Lee发明了互联网(World Wide Web)。WWW被认为是全球互连的实际的和抽象的资源的集合–它按需求提供信息实体–通过互联网访问。实际的资源的范围从文件到人,抽象的资源包括数据库查询。

因为要通过多样的方式识别资源(人的名字可能相同,然而计算机文件只能通过唯一的路径名称组合访问),所以需要标准的识别WWW资源的途径。为了满足这种需要,Tim Berners-Lee引入了标准的识别、定位和命名的途径:URI、URL和URN。

URI:Uniform Resource Identifier,统一资源标识符;

URL:Uniform Resource Locator,统一资源定位符;

URN:Uniform Resource Name,统一资源名称。

在这个体系中的URI、URL和URN是彼此关联的。URI的范畴位于体系的顶层,URL和URN的范畴位于体系的底层。这种排列显示URL和URN都是URI的子范畴。

三者中,其中URL和URI特别容易混淆。

URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URL的格式由下列三部分组成:

协议(或称为服务方式);

存有该资源的主机IP地址(有时也包括端口号);

主机资源的具体地址。如目录和文件名等。

第一部分和第二部分之间用”://”符号隔开,第二部分和第三部分用”/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。

目前最大的缺点是当信息资源的存放地点发生变化时,必须对URL作相应的改变。因此人们正在研究新的信息资源表示方法。

URI是以某种统一的(标准化的)方式标识资源的简单字符串,一般由三部分组成:

访问资源的命名机制。

存放资源的主机名。

资源自身的名称,由路径表示。

典型情况下,这种字符串以scheme开头,语法如下:

[scheme:] scheme-specific-part

http://www.google.com,其中http是scheme,//www.google.com是 scheme-specific-part,并且它的scheme与scheme-specific-part被冒号分开了。

有的URI指向一个资源的内部。这种URI以”#”结束,并跟着一个anchor标志符(称为片断标志符)。

相对URI不包含任何命名规范信息。它的路径通常指同一台机器上的资源。相对URI可能含有相对路径(如:“..”表示上一层路径),还可以包含片断标志符。

URI的常见问题

难以输入,URI不必要的冗长。

莫明其妙的大写字母。

不常见的标点符号。

在纸介质上显示很困难,一些字符在纸上打印出来不容易辨认。

主机和端口的问题除了 scheme-specific 部分,domain 和port 也可能给用户带来困惑。

设计URI应该遵循的规则(具体还可以参考上一篇:优秀的URI不会改变)

URI 是网站UI的一部分,因此,可用的网站应该满足这些URL 要求

简单,好记的域名

简短(short)的URI

容易录入的URI

URI 能反应站点的结构

URI 是可以被用户猜测和hack的(也鼓励用户如此)

永久链接,Cool URI don’t change

聪明的选择URI

一定要短为了URI能被方便的录入,写下,拼写和记忆,URI 要尽可能的短,根据w3c 提供的参考数据,一个URI 的长度最好不要超过80个字节(这并非一个技术限制,经验和统计提供的数据),包括schema 和host,port 等。

大小写策略URI的大小写策略要适当,要么全部小写,要么首字母大写,应避免混乱的大小写组合,在Unix 世界,文件路径队大小写是敏感的,而在Windows 世界,则不对大小写敏感。

允许URI管理URI映射 管理员可以重新组织服务器上的文件系统结构,而无需改动URI,这就需要URI和真实的服务器文件系统结构之间有一个映射机制。,而不是生硬的对应。这种映射机制可以通过如下技术手段实现:

Aliases ,别名,Apache 上的目录别名,IIS 上的虚拟目录

Symbolic links ,符号链接,Unix 世界的符号链接

Table or database of mappings ,数据库映射,URI 和文件系统结构的对应关系存储在数据库中。

标准的重定向管理员可以简单的通过修改HTTP 状态代码来实现服务器文件系统结构变更之后的URI兼容,可以利用的HTTP Status Code 有:

301 Moved Permanently ([RFC2616] section 10.3.2)

302 Found (undefined redirect scheme, [RFC2616] Section 10.3.3)

Temporary Redirect ([RFC2616] Section 10.3.8)

用独立的URI

技术无关的URI

提供动态内容服务时,应使用技术无关的URI。即URI不暴露服务器端使用的脚本语言,平台引擎,而这些语言,平台,引擎的变化也不会导致URI的变更。因此,sevelet,cgi-bin之类的单词不应该出现在URI 中。

提供静态内容服务时,应当隐去文件的扩展名取而代之的技术是content-negotiation, proxy, 和URI mapping

身份标志和Session 机制

使用标准的身份认证机制,而不是每个用户一个特定的URI

使用标准的Session 机制,而不是把Session ID 放在URI 中使用。

内容变更时使用标准转向

对变更的内容使用标准的重定向

对删除的资源使用 HTTP410

提供索引代理

索引策略

Content-Location

Content-MD5

提供适当的缓存信息

缓存相关的HTTP头

缓存策略

缓存生成内容 HTTP HEAD和HTTP GET

总结

URI 是Web UI 的一部分,应当像对待网站Logo 和公司品牌一样对待它

URI 是网站和普通用户之间的唯一接口,应当像对待你的商务电话号码一样对待它

读懂并记住上面两句话,你下次设计URI 的时候就会给它应有的重视了。

URL 应当是用户友好的

URI 应当是可读的

URI 应当是可预测的

URI 应当是统一的

读懂和记住上面四句话,你就知道应该设计什么样的URI了。

欢迎关注我的公众号(同步更新文章)DoNet技术分享平台

阅读原文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 下文是对维基百科中URI介绍的粗略翻译。原文 Uniform Resource Identifier统一资源标识符...
    胡不归vac阅读 753评论 0 0
  • URI、URL和URNURI :Uniform Resource Identifier,统一资源标识符URL:Un...
    JacobMa1996阅读 525评论 0 1
  • 组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://...
    Palomar阅读 1,532评论 0 6
  • 喊姥爷像唱歌一样这一个月来会说不少话,模仿发音的关键时期能分清某个物品是谁的,不都是佑佑的了晚上吃奶后,轱辘一会儿...
    星空下的悠游阅读 121评论 0 1