💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
>[success] # 内置模块url 1. Node.js 的`url`模块提供了一组用于解析和操作 URLs(统一资源定位符)的工具函数 * `url.parse()`:把 URL 字符串转换成一个 URL 对象。 * `url.format()`:根据一个 URL 对象返回一个 URL 字符串。 * `url.resolve()`:类似于 Unix 中的`basename`,可以用来合并两个 URL 字符串。 2. `url.parse()`将一个 URL 字符串解析成一个包含 URL 组件的对象。你可以访问这些 URL 组件,例如`protocol`、`hostname`、`pathname`和`hash`。 ~~~ const url = require('url'); const myUrl = 'https://github.com/nodejs/node/blob/v12.3.0/doc/api/url.md#url_url_parse_urlstring_parsequerystring_slashesdenotehost'; const parsedUrl = url.parse(myUrl); console.log(parsedUrl); // 输出:Url { // protocol: 'https:', // slashes: true, // auth: null, // host: 'github.com', // port: null, // hostname: 'github.com', // hash: '#url_url_parse_urlstring_parsequerystring_slashesdenotehost', // search: null, // query: null, // pathname: '/nodejs/node/blob/v12.3.0/doc/api/url.md', // path: '/nodejs/node/blob/v12.3.0/doc/api/url.md', // href: 'https://github.com/nodejs/node/blob/v12.3.0/doc/api/url.md#url_url_parse_urlstring_parsequerystring_slashesdenotehost' // } ~~~ >[info] ## 常见的api | 方法名 | 描述 | | --- | --- | | `url.parse(urlString[, parseQueryString[, slashesDenoteHost]])` | 解析 URL 字符串并返回一个 URL 对象。parseQueryString 默认为`false`,表示是否将查询参数解析为对象形式。slashesDenoteHost 默认为`false`,表示是否将两个斜杆视为主机名的分隔符。 | | `url.format(urlObject)` | 接收一个 URL 对象并返回相应的 URL 字符串。 | | `url.resolve(from, to)` | 从`from`URL 解析出`to`URL 的绝对 URL。 | | `url.URL` | URL 类。可以用来直接创建 URL 对象。 | | `url.URLSearchParams` | URLSearchParams 类。可以用来操作 URL 查询参数。 | >[danger] ##### `url.parse(urlString[, parseQueryString[, slashesDenoteHost]])` 将 URL 字符串解析为 URL 对象。 * **urlString**:`<string>`,要解析的 URL 字符串。 * **parseQueryString**:`<boolean>`,可选参数,默认为 false。为 true 时表示将查询字符串解析为对象。 * **slashesDenoteHost**:`<boolean>`,可选参数,默认为 false。为 true 时表示两个斜杆视为主机名的分隔符。 返回`<URL>`对象。 ~~~ const { URL } = require('url'); const myUrl = new URL('https://example.com/foo/bar?baz=qux'); console.log(myUrl); // 输出: // URL { // href: 'https://example.com/foo/bar?baz=qux', // origin: 'https://example.com', // protocol: 'https:', // username: '', // password: '', // host: 'example.com', // hostname: 'example.com', // port: '', // pathname: '/foo/bar', // search: '?baz=qux', // searchParams: URLSearchParams { 'baz' => 'qux' }, // hash: '' // } ~~~ >[danger] ##### `url.format(urlObject)` 接收一个 URL 对象,返回相应的 URL 字符串。 * **urlObject**:`<URL>`,要转换的 URL 对象。 返回`<string>`,表示 URL 字符串。 ~~~ const { URL } = require('url'); const myUrl = new URL('https://example.com/foo/bar?baz=qux'); console.log(myUrl.href); // 输出:https://example.com/foo/bar?baz=qux const { format } = require('url'); console.log(format(myUrl)); // 输出:https://example.com/foo/bar?baz=qux ~~~ >[danger] ##### `url.resolve(from, to)` 从`from`URL 解析出`to`URL 的绝对 URL。 * **from**:`<string>`,基本 URL,也就是相对 URL 解析时的上下文。 * **to**:`<string>`,要解析的目标 URL。 返回`<string>`,表示绝对 URL。 ~~~ const { resolve } = require('url'); console.log(resolve('/foo/bar', './baz')); // 输出:/foo/baz console.log(resolve('/foo/bar', '/baz')); // 输出:/baz ~~~ >[danger] ##### `url.URL` URL 类。可以用来直接创建 URL 对象。 ~~~ const { URL } = require('url'); const myUrl = new URL('https://example.com/foo/bar?baz=qux'); console.log(myUrl.protocol); // 输出:https: ~~~ >[danger] ##### `url.URLSearchParams` URLSearchParams 类。可以用来操作 URL 查询参数。 ~~~ const { URLSearchParams } = require('url'); const params = new URLSearchParams('foo=bar&baz=qux'); console.log(params.get('foo')); // 输出:bar console.log(params.get('baz')); // 输出:qux console.log(params.getAll('foo')); // 输出:['bar'] console.log(params.toString()); // 输出:foo=bar&baz=qux ~~~