阅读更多系列文章请访问我的GitHub博客,示例代码请访问这里。
url.parse
URL模块用于对URL的解析,常用的是url.parse方法。
假设有一个url为https://www.google.com:8080/a/b?x=1&y=2&y=3&y=4,可以用url.parse方法进行解析。
示例代码:/lesson13/url.js
const url = require('url')
const str = 'https://www.google.com:8080/a/b?x=1&y=2&y=3&y=4'
console.log(url.parse(str))
打印结果如下:
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'www.google.com:8080',
port: '8080',
hostname: 'www.google.com',
hash: null,
search: '?x=1&y=2&y=3&y=4',
query: 'x=1&y=2&y=3&y=4',
pathname: '/a/b',
path: '/a/b?x=1&y=2&y=3&y=4',
href: 'https://www.google.com:8080/a/b?x=1&y=2&y=3&y=4' }
可以看到url的信息如端口号、域名、query参数等都被解析出来了。
如果需要将query参数转为对象,则可以为url.parse函数的第二个参数传true,如console.log(url.parse(str, true)),打印结果如下:
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'www.google.com:8080',
port: '8080',
hostname: 'www.google.com',
hash: null,
search: '?x=1&y=2&y=3&y=4',
query: [Object: null prototype] { x: '1', y: [ '2', '3', '4' ] },
pathname: '/a/b',
path: '/a/b?x=1&y=2&y=3&y=4',
href: 'https://www.google.com:8080/a/b?x=1&y=2&y=3&y=4' }
同时可以看到y=2&y=3&y=4参数被解析为了y: [ ‘2’, ‘3’, ‘4’ ]。
new URL()
除了用url.parse方法解析url,还可以通过构造函数URL,创建一个实例,其中带有解析后的数据。
实例有一个toString方法,可以将实例解析为字符串url。
示例代码:/lesson13/url.js
代码如下:
const { URL } = require('url')
const urlObj = new URL(str)
console.log(urlObj)
console.log(urlObj.toString())
打印结果为:
URL {
href: 'https://www.google.com:8080/a/b?x=1&y=2&y=3&y=4',
origin: 'https://www.google.com:8080',
protocol: 'https:',
username: '',
password: '',
host: 'www.google.com:8080',
hostname: 'www.google.com',
port: '8080',
pathname: '/a/b',
search: '?x=1&y=2&y=3&y=4',
searchParams:
URLSearchParams { 'x' => '1', 'y' => '2', 'y' => '3', 'y' => '4' },
hash: '' }
https://www.google.com:8080/a/b?x=1&y=2&y=3&y=4 // toString方法解析出的url
本文深入讲解了使用Node.js中的URL模块解析和操作URL的方法。包括如何利用url.parse将URL分解成各个组成部分,以及如何通过URL构造函数创建包含解析数据的对象。示例代码展示了如何解析复杂的URL,提取端口号、域名和查询参数。

2031

被折叠的 条评论
为什么被折叠?



