- Node.js教程
- Node.js - 教程
- Node.js - 简介
- Node.js - 环境设置
- Node.js - 首次申请
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调概念
- Node.js - 上传文件
- Node.js - 发送电子邮件
- Node.js - 活动
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 流程
- Node.js - 扩展应用程序
- Node.js - 包装
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲器
- Node.js - Streams
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL创建数据库
- Node.js - MySQL创建表
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where 子句
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - utility 模块
- Node.js - Web 模块
NodeJS - url.parse() 方法
NodeJS url.parse() 方法接受一个 URL 字符串,对其进行解析,最后,它返回一个对象,其中包含提供的 URL 字符串中存在的段。
返回的对象包含以下属性
- protocol:指定 URL 的协议方案(例如:https:)。
- slashes:一个布尔值,指定协议后是否跟两个 ASCII 正斜杠 (//)。
- auth:指定 URL 的身份验证段(例如:用户名:密码)。
- username:指定身份验证段中的用户名。
- password:指定身份验证段中的密码。
- host:指定带有端口号的主机名。
- hostname:指定主机名,不包括端口号。
- port:表示端口号。
- pathname:表示URL路径。
- query:除非 parsing 设置为 false,否则这将包含已解析的查询字符串。
- hash:它指定 URL 的片段部分,包括“#”。
- href:指定完整的 URL。
- origin:指定URL的来源。
语法
以下是 NodeJS url.parse() 方法的语法
url.parse(urlString[, parseQueryString[, slashesDenoteHost]])
参数
此方法接受三个参数。下面将对此进行描述
- urlString:此参数指定需要分析的 URL 字符串。
- parseQueryString:此参数指定一个布尔值。如果为 true,则 URL 字符串中的查询段将设置为对象。如果为 false,则查询属性将是一个未解析的字符串。默认情况下,该值为 false。
- slashesDenoteHost:此参数指定一个布尔值。如果为 true,则文本字符串“//”之后和下一个“/”之前的第一个标记将被视为主机。例如,考虑 (//one/two),结果将是 {host: 'one', pathname: '/two'} 而不是 {pathname: '//one/two'}。默认情况下,该值为 false。
返回值
此方法采用 URL 字符串并返回一个对象。
如果要分析的 urlString 不是字符串,则此方法将抛出 TypeError。
如果 auth 属性存在但无法解码,则此方法将引发 URIError。
例如果我们将布尔值 true 作为 NodeJS url.parse() 方法的 parseQueryString 参数传递,它将以对象的形式设置查询属性。
const url = require('url');
const address = 'https://user:pass@site.com:2000/pa/th?q=val#hash';
let result = url.parse(address, true);
console.log(result)
输出
Url {
protocol: 'https:',
slashes: true,
auth: 'user:pass',
host: 'site.com:2000',
port: '2000',
hostname: 'site.com',
hash: '#hash',
search: '?q=val',
query: { q: 'val' },
pathname: '/pa/th',
path: '/pa/th?q=val',
href: 'https://user:pass@site.com:2000/pa/th?q=val#hash'
}
protocol: 'https:',
slashes: true,
auth: 'user:pass',
host: 'site.com:2000',
port: '2000',
hostname: 'site.com',
hash: '#hash',
search: '?q=val',
query: { q: 'val' },
pathname: '/pa/th',
path: '/pa/th?q=val',
href: 'https://user:pass@site.com:2000/pa/th?q=val#hash'
}
例
如果我们将布尔值 false 作为 NodeJS parse() 方法的 parseQueryString 参数传递,它会将查询属性作为未解析的字符串返回。
const url = require('url');
const address = 'https://site.com/pa/th?q=val#hash';
let result = url.parse(address, false);
console.log(result)
输出
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'site.com',
port: null,
hostname: 'site.com',
hash: '#hash',
search: '?q=val',
query: 'q=val',
pathname: '/pa/th',
path: '/pa/th?q=val',
href: 'https://site.com/pa/th?q=val#hash'
}
protocol: 'https:',
slashes: true,
auth: null,
host: 'site.com',
port: null,
hostname: 'site.com',
hash: '#hash',
search: '?q=val',
query: 'q=val',
pathname: '/pa/th',
path: '/pa/th?q=val',
href: 'https://site.com/pa/th?q=val#hash'
}
例
如果 parse() 方法的 urlString 参数不是字符串,则返回 TypeError。
在这里,我们尝试解析一个不是字符串的 URL 字符串。
const url = require('url');
const address = 798032;
let result = url.parse(address, true);
console.log(result)
类型错误
正如我们在下面的输出中看到的,parse() 方法会抛出 TypeError,因为提供的 URL 字符串不是字符串。
url.js:150
throw new ERR_INVALID_ARG_TYPE('url', 'string', url);
^
TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received type number
at Url.parse (url.js:150:11)
at Object.urlParse [as parse] (url.js:144:13)
at Object.<anonymous> (/home/cg/root/63aab5fe9c383/main.js:5:18)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
at startup (internal/bootstrap/node.js:238:19)
urlobject Properties (Legacy)
throw new ERR_INVALID_ARG_TYPE('url', 'string', url);
^
TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received type number
at Url.parse (url.js:150:11)
at Object.urlParse [as parse] (url.js:144:13)
at Object.<anonymous> (/home/cg/root/63aab5fe9c383/main.js:5:18)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
at startup (internal/bootstrap/node.js:238:19)
urlobject Properties (Legacy)