HTTP协议中url和uri的区别。
每个url都是uri,但是不是每个uri都是url。
URI:是统一资源的标识符,web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个URI来定位的。URI的三个组成部分:
- 访问资源的命名机制
- 存放资源的主机名
- 资源自生的名称,由路径表示,着重强调于资源。
URL:统一资源的定位符。在internet上用来描述信息资源的字符串,主要用在各种www客户程序和服务程序上,特别是Mosaic。采用URL可以用一种统一的格式来描述各种信息资 源,包括文件、服务器的地址和目录等。URL的三个组成部分:
- 协议(或者称为服务方式)
- 存有该资源的主机IP地址,有时也包括端口号
- 主机资源的具体地址,如目录和文件名。
接下来学习一下nodejs中URL的三个方法:
在nodejs中URL很重要,只要是涉及到网络请求的接收,路径参数的处理,非常方便的解析出url的组成部分,从而来识别请求的类型,以及来判断如何来返回数据。
1. 首先在命令行输入node进入node环境。(注意:第一次学习cmd命令的时候,以为$也是命令,后来才发现原来他只是一个标识,命令的标识。)
$ node
2. 命令行中查看url的方法。
$ url
3. 首先验证url.parse()这个方法
用法1:不加true参数
$ url.parse('https://promotion.aliyun.com/ntms/act/season.html?utm_campaign=season&utm_medium=images&utm_source=cnblog&utm_content=m_42835')
用法2:追加一个true参数
$ url.parse('https://promotion.aliyun.com/ntms/act/season.html?utm_campaign=season&utm_medium=images&utm_source=cnblog&utm_content=m_42835',true)
参数说明:
- protocol:底层使用的协议(http或者ftp等)
- slashes:是否有协议的双斜线//
- auth:
- host: IP地址或者域名
- port: 端口 默认是80
- hostname: 主机名
- hash:嘻哈值 一般对应的是页面上的某个锚点
- search: 查询字符串参数
- query: 发送给HTTP的一个数据,被等号分割开的键值叫做参数串
- pathname: 访问资源路径名
- path:路径
- href: 没被解析的完整的路径
4. url.format() 方法:将参数合并成合法的url地址,如下图所示
5. url.resolve()方法:拼接