Node中的URL总结

Node中的URL总结

在这里插入图片描述

上图是node官网中的一张图,在node中,url模块提供了两套API来处理URL:一个是旧版本遗留的 API,一个是实现了 WHATWG标准的新 API。在图中,下方的是WHATWG的URL对象的属性,上方是旧的URL对象属性。

一、URL(Universal Resource Locator,统一资源定位符)的组成

URL主要包含:协议、主机、端口号、路径、参数、查询等
URL由三部分组成:协议类型,主机名和路径及文件名

protocol(协议类型):
  1. 表示访问资源和服务的协议
  2. 常见的协议类型有:http,ftp,mailto,file等
    • http:超文本传输协议,是因特网上应用最为广泛的网络传输协议。格式为http://
    • ftp:文件传输协议。格式为ftp://
    • file:访问本地计算机上的资源。格式为file:///
    • mailto:个用于发送邮件的URL协议。格式为mailto:
hostname – 主机名
port – 端口号
  1. 类似于房间号
pathname – 文件路径
  1. 由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
search – 查询部分(?query)
  1. 可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。
hash

二、Node中常用的URL操作命令

  1. url.parse()方法
url.parse('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash')
// 得到的结果如下
Url {
  protocol: 'https:', // 协议
  slashes: true, // (协议的“:”号后是否有“/”)(slashes意思是斜杠)
  auth: 'user:pass', // // 用户名,密码
  host: 'sub.host.com:8080',// host主机名
  port: '8080', // 端口号
  hostname: 'sub.host.com', // 不带端口号的主机名
  hash: '#hash', // 哈希值(URL属性中在井号“#”后面的分段)
  search: '?query=string', // 查询字符串(URL属性中跟在问号后面的部分包括?号)
  query: 'query=string', // 请求参数
  pathname: '/p/a/t/h', // 路径名
  path: '/p/a/t/h?query=string', // 带查询的路径名
  href:
   'https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash' // 原字符串本身
}
/**
 * 加true与不加true区别
 *   query解析出来的类型不同,加true时为object
*/
url.parse('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash', true)
// 得到的结果如下
Url {
  protocol: 'https:',
  slashes: true,     
  auth: 'user:pass', 
  host: 'sub.host.com:8080',
  port: '8080',
  hostname: 'sub.host.com',
  hash: '#hash',
  search: '?query=string',
  query: [Object: null prototype] { query: 'string' },
  pathname: '/p/a/t/h',
  path: '/p/a/t/h?query=string',
  href:
   'https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash' }
  1. url.host
  2. url.hash
  3. url.hostname
    • 获取及设置 URL 的主机名部分
  4. url.href
  5. url.origin
    • 获取只读的序列化的 URL的origin
  6. url.password
    • 获取及设置 URL 的密码部分。
  7. url.pathname
    • 获取及设置 URL 的路径部分。
  8. url.port
    • 获取及设置 URL 的端口部分。
  9. url.protocol – 获取及设置 URL 的协议部分。
  10. url.toString()
  • 在 URL 对象上调用 toString() 方法将返回序列化的 URL。 返回值与 url.href 和 url.toJSON() 的相同。
  • 由于需要符合标准,此方法不允许用户自定义URL的序列化过程。如果需要更大灵活性,require(‘url’).format()可能更合适。
  1. url.toJSon()
  • 在 URL 对象上调用toJSON()方法将返回序列化的URL。返回值与url.href和url.toString()的相同
  1. url.search
  • 获取及设置 URL 的序列化查询部分。
const myURL = new URL('https://example.org/abc?123');
console.log(myURL.search);
// 打印 ?123

myURL.search = 'abc=xyz';
console.log(myURL.href);
// 打印 https://example.org/abc?abc=xyz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值