写出正确的网址-URI(网址)的组成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写出正确的网址-URI(网址)的组成相关的知识,希望对你有一定的参考价值。

参考技术A

URI 统一资源标识符,用来标识服务器上的资源;

严格意义上来说URI不等同于网址,它的组成如下

URI = URL + URN

在我们通常的HTTP协议中用的网址是URL(统一资源定位符),由于URL太常用太普及了,通常认为URI与URL等同;

想要写出正确的网址也就是URI,我们得需要了解下URI的格式以及其组成的部分;

URI本质就是一个字符串,该【字符串】用于【唯一标识资源的位置或者名字】

下面如图所示就是一个URI的基本组成

scheme

URI第一个组成部分叫做scheme,【协议名】。表示资源应用使用哪种协议来访问

常见的协议名:http、https、ftp;

一个URI没有提供scheme那就不是一个完整的URI,也是无效的;

三个特定的字符【://】

【://】是把scheme和后面的部分分离开来;

纵然【://】设计很奇怪,也有点没必要,但是存在30年了,我们也得接受下嘛;

authority【host:port】

表示资源所在的主机名,通常表现是【host:port】

在HTTP协议中,其中host是必须有的,可以是IP地址也可以是域名;

port不是必须有的,可以省略,我们HTTP协议默认端口是【80】,HTTPS默认的端口是【443】

path

有了前面的协议以及主机名我们就能访问到资源所在的服务器了,但是想要确定资源在服务器中的具体位置就得需要【path】位置

其中path采用了文件系统分离资源的格式,也即是【目录】的表示形成,使用【/】来描述层级关系;

其中path所表示的部分开头必须是以【/】开头的,也就是说是path的一部分;【/】不是属于前面authority的;

example

对于【协议】+【主机名】+【路径】这种可以完全精准定位到一个资源,当我们向给这个资源添加写修饰的参数时,就需要我们的查询参数(query)

example

获取图片是,我们想要180*180的 我们可以使用query

获取列表数据时,我们要分页获取,可以用query

上述的场景使用需要在URI上配上query参数能够满足

query在URI中表现形式

query是在path之后,用一个【?】表示开始但不包括【?】

query中是以key-value形式携带参数,可以带多组【kv】,每组之间使用【&】进行拼接

对于URI来说,它是一个字符串,当中只能使用ASCII码,如果出现英语以外的其他语音,它是会进行编码的;

针对【@&?】这些特殊字符也会进行编码;

如果不编码会导致URI的解析出错,URI中的编码称为【转义】

URI中的转义直接把非ASCII码或者特殊字符的转换成十六进制,然后在前面加上一个【%】

所以你在开发中能看到你请求接口中携带的参数被转义后就是这样的格式【%十六进制】

对就是这么简单;

对于上述所说的URI格式,本次新增了【user:passwd@】以及【#fragment】两个

表示登陆的主机是的用户名和密码,不推荐这种使用方式,太不安全,把敏感信息暴露出来了;

片段标识符,是资源内部的一种标签

由于这个参数只能在浏览器这种客户端上使用,服务器是看不到这个参数的,即时发送给服务器,服务器也不会处理的,所以就用不到了;没啥意义;

以上是关于写出正确的网址-URI(网址)的组成的主要内容,如果未能解决你的问题,请参考以下文章

Express 框架中的路由

Android O 上的 android.intent.action.SEND - URI 包含 file:// 网址而不是 content://

如何检查网址是不是有效[重复]

前端代码规范网址导航(总结)

前端代码规范网址导航(总结)

如何使网址清晰? [复制]