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 相关的逻辑,减少错误的可能性。

