URLSearchParams解析url地址栏参数

胖鹅68 2024-08-17 13:03:01 阅读 65

文章目录

一、参考资料二、问题说明三、URLSearchParams介绍3.1 URLSearchParams的来历3.2 URLSearchParams的作用3.3 快速入门3.4 URLSearchParams的方法和属性

四、使用示例(解析url地址)4.1 获取和解析URL参数4.2 构建和更新URL参数

五、注意事项

一、参考资料

MDN Web 文档:URLSearchParamsAxios qs库(post传递JSON对象和get请求URL参数的相互转换工具)

二、问题说明

以前经常会使用 axios 库中的 “qs库”,参考 Axios qs库(post传递JSON对象和get请求URL参数的相互转换工具)

无意中发现同事写的代码中使用了URLSearchParams类,因此作为笔记学习

三、URLSearchParams介绍

3.1 URLSearchParams的来历

在过去,处理URL查询参数是一项相对繁琐的任务。开发人员需要手动解析URL,提取查询字符串部分,并对其进行分割和解码。这个过程涉及到很多繁琐的字符串操作和编码解码步骤,容易出错且代码冗长。为了简化这一过程, ECMAScript 2015(ES6)引入了URLSearchParams API。

3.2 URLSearchParams的作用

URLSearchParams的主要作用是对URL中的查询参数进行解析、访问和操作。它提供了一系列的方法,可以方便地执行以下操作:

解析URL查询参数: URLSearchParams可以接收一个URL查询字符串作为输入,并将其解析为一个可操作的对象。它自动处理编码和解码,将查询参数解析为键值对的形式,方便后续的操作。

访问查询参数: 通过URLSearchParams提供的方法,可以轻松地访问和获取URL中的查询参数。开发人员可以根据参数名称获取对应的值,或者获取所有参数的迭代器,实现灵活的参数访问。

添加和修改查询参数: URLSearchParams允许开发人员动态地添加、修改或删除URL中的查询参数。它提供了一组方法,如append()、set()和delete(),使得对查询参数的修改变得简单明了。

生成查询参数: URLSearchParams不仅可以解析查询参数,还可以将其转换回URL查询字符串的形式。它提供了toString()方法,可以将当前的查询参数对象序列化为标准的URL查询字符串,方便用于URL构建或发送请求等场景。

3.3 快速入门

<code>const paramsString = "q=URLUtils.searchParams&topic=api";

const searchParams = new URLSearchParams(paramsString);

// 迭代查询参数

for (let p of searchParams) {

console.log(p);

}

console.log(searchParams.has("topic")); // true

console.log(searchParams.has("topic", "fish")); // false

console.log(searchParams.get("topic") === "api"); // true

console.log(searchParams.getAll("topic")); // ["api"]

console.log(searchParams.get("foo") === null); // true

console.log(searchParams.append("topic", "webdev"));

console.log(searchParams.toString()); // "q=URLUtils.searchParams&topic=api&topic=webdev"

console.log(searchParams.set("topic", "More webdev"));

console.log(searchParams.toString()); // "q=URLUtils.searchParams&topic=More+webdev"

console.log(searchParams.delete("topic"));

console.log(searchParams.toString()); // "q=URLUtils.searchParams"

3.4 URLSearchParams的方法和属性

URLSearchParams提供了一系列方法和属性,用于解析、访问和操作URL中的查询参数。本节将详细介绍URLSearchParams的主要方法和属性,并提供相关的代码示例。

get(name)

作用:根据参数名称获取对应的值。

const params = new URLSearchParams('?name=John&age=30');

const name = params.get('name');

console.log(name); // 输出:John

getAll(name)

作用:根据参数名称获取对应的值数组。

const params = new URLSearchParams('?name=John&age=30&name=Alice');

const names = params.getAll('name');

console.log(names); // 输出:['John', 'Alice']

has(name)

作用:判断是否存在指定名称的参数。

const params = new URLSearchParams('?name=John&age=30');

console.log(params.has('name')); // 输出:true

console.log(params.has('gender')); // 输出:false

append(name, value)

作用:向URL中添加新的参数。

const params = new URLSearchParams('?name=John');

params.append('age', '30');

console.log(params.toString()); // 输出:'name=John&age=30'

set(name, value)

作用:设置指定参数的值,如果参数不存在则添加新参数。

const params = new URLSearchParams('?name=John');

params.set('name', 'Alice');

params.set('age', '30');

console.log(params.toString()); // 输出:'name=Alice&age=30'

delete(name)

作用:删除指定名称的参数。

const params = new URLSearchParams('?name=John&age=30');

params.delete('age');

console.log(params.toString()); // 输出:'name=John'

keys()

作用:返回一个迭代器,用于遍历所有参数的名称。

const params = new URLSearchParams('?name=John&age=30');

for (const key of params.keys()) {

console.log(key); // 输出:'name', 'age'

}

values()

作用:返回一个迭代器,用于遍历所有参数的值。

const params = new URLSearchParams('?name=John&age=30');

for (const value of params.values()) {

console.log(value); // 输出:'John', '30'

}

entries()

作用:返回一个迭代器,用于遍历所有参数的键值对。

const params = new URLSearchParams('?name=John&age=30');

for (const [key, value] of params.entries()) {

console.log(`${ key}: ${ value}`); // 输出:'name: John', 'age: 30'

}

toString()

作用:将URLSearchParams对象转换为字符串表示形式。

const params = new URLSearchParams('?name=John&age=30');

const paramString = params.toString();

console.log(paramString); // 输出:'name=John&age=30'

四、使用示例(解析url地址)

4.1 获取和解析URL参数

在Web开发中,经常需要获取URL中的参数值进行后续处理。URLSearchParams提供了简单而强大的方法来获取和解析URL参数。下面是一个示例,演示如何使用URLSearchParams获取和解析URL中的参数。

假设当前URL为:http://test.com/?name=John&age=25&gender=male

// 创建URLSearchParams对象

const params = new URLSearchParams(window.location.search);

// 获取参数值

const name = params.get('name'); // "John"

const age = params.get('age'); // "25"

const gender = params.get('gender'); // "male"

// 输出参数值

console.log(`Name: ${ name}`);

console.log(`Age: ${ age}`);

console.log(`Gender: ${ gender}`);

在上述示例中,通过window.location.search获取当前URL的查询参数部分,并使用URLSearchParams对象解析该参数。通过调用get()方法,可以根据参数名获取对应的值。这样,我们可以轻松地获取URL中的参数值,方便后续的处理和展示。

4.2 构建和更新URL参数

除了获取和解析URL参数,URLSearchParams还提供了方便的方法来构建和更新URL参数。下面是一个示例,演示如何使用URLSearchParams来构建和更新URL参数。

// 创建URLSearchParams对象

const params = new URLSearchParams();

// 设置参数

params.set('name', 'John');

params.set('age', '25');

// 追加参数

params.append('gender', 'male');

params.append('hobby', 'reading');

// 获取参数字符串

const queryString = params.toString(); // "name=John&age=25&gender=male&hobby=reading"

// 构建URL

const url = `http://test.com/?${ queryString}`;

console.log(url);

五、注意事项

在使用URLSearchParams时,有几个注意事项需要我们注意:

浏览器兼容性

URLSearchParams是一个相对较新的Web API,在旧版本的浏览器中可能不被支持。在使用URLSearchParams之前,要确保目标浏览器的兼容性。如果需要在旧版浏览器中使用,可以考虑使用替代方案。

URL参数格式

URLSearchParams期望的URL参数格式是key=value,多个参数之间使用&分隔。在使用URLSearchParams之前,要确保URL参数的格式是正确的,否则可能导致解析错误或获取参数值失败。

参数值编码

URLSearchParams会自动对参数值进行编码,以确保URL的正确性和安全性。但在某些情况下,如果参数值已经被编码,使用URLSearchParams可能会导致重复编码或编码错误的问题。在这种情况下,我们可以手动对参数值进行编码或解码,以避免问题的发生。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。