url解析与拼接工具UrlUtils
发布人:shili8
发布时间:2025-02-05 02:52
阅读次数:0
**URL 解析与拼接工具 UrlUtils**
在 web 开发中,URL 是一个非常重要的组成部分。它不仅用于传递数据,还可以用来构建 URL 链接、解析 URL 参数等。在这个文档中,我们将介绍一个名为 `UrlUtils` 的 URL 解析与拼接工具。
**工具功能**
`UrlUtils` 提供以下功能:
* **URL 解析**: 将 URL 字符串转换成 URL 对象,方便获取 URL 各个部分(如协议、域名、路径等)。
* **URL 拼接**: 根据 URL 对象或 URL 部分拼接出完整的 URL 字符串。
* **参数解析**: 从 URL 中提取参数,并将其转换成一个 Map 对象,方便获取和操作 URL 参数。
**工具实现**
下面是 `UrlUtils` 的基本实现:
javascriptclass UrlUtils { /** * 将 URL 字符串转换成 URL 对象 * @param {string} url - URL 字符串 * @returns {URL} URL 对象 */ static parseUrl(url) { return new URL(url); } /** * 根据 URL 对象或 URL 部分拼接出完整的 URL 字符串 * @param {string|URL} url - URL 对象或 URL 部分 * @returns {string} 完整的 URL 字符串 */ static assembleUrl(url) { if (url instanceof URL) { return url.href; } else { return url; } } /** * 从 URL 中提取参数,并将其转换成一个 Map 对象 * @param {URL} url - URL 对象 * @returns {Map<string, string>} 参数 Map 对象 */ static parseParams(url) { const params = new Map(); for (const [key, value] of url.searchParams) { params.set(key, value); } return params; } /** * 根据参数 Map 对象构建 URL 的 search 部分 * @param {Map<string, string>} params - 参数 Map 对象 * @returns {string} search 部分的 URL 字符串 */ static assembleSearchParams(params) { const searchParams = []; for (const [key, value] of params) { searchParams.push(`${key}=${value}`); } return searchParams.join("&"); } /** * 根据 URL 对象或 URL 部分构建完整的 URL 字符串 * @param {string|URL} url - URL 对象或 URL 部分 * @returns {string} 完整的 URL 字符串 */ static assembleFullUrl(url) { const assembledUrl = UrlUtils.assembleUrl(url); const searchParams = UrlUtils.parseSearchParams(UrlUtils.parseParams(assembledUrl)); return `${assembledUrl}?${searchParams}`; } }
**示例代码**
下面是使用 `UrlUtils` 的示例代码:
javascript// URL 解析示例const url = " />const parsedUrl = UrlUtils.parseUrl(url); console.log(parsedUrl); // Output: URL { href: ' protocol: ' hostname: 'example.com', pathname: '/path', search: '?a=1&b=2', hash: '' } // URL 拼接示例const assembledUrl = UrlUtils.assembleUrl(parsedUrl); console.log(assembledUrl); // Output: 参数解析示例const params = UrlUtils.parseParams(parsedUrl); console.log(params); // Output: Map { 'a' => '1', 'b' => '2' } // search 部分构建示例const assembledSearchParams = UrlUtils.assembleSearchParams(params); console.log(assembledSearchParams); // Output: a=1&b=2// 完整 URL 构建示例const fullUrl = UrlUtils.assembleFullUrl(parsedUrl); console.log(fullUrl); // Output: /> **总结** `UrlUtils` 提供了一个方便的 API 来解析和拼接 URL。它可以帮助开发者更好地处理 URL 相关的逻辑,减少错误的可能性。