跳到主要内容位置

URLSearchParams:构造和发送查询参数的简单方法

在 Web 开发中,我们经常需要向服务器发送查询参数。常规的方法是手动构造查询字符串并将其附加到 URL 中,但这种方法比较繁琐。URLSearchParams 提供了一种更为简单的方式来构造和解析 URL 查询参数。

URLSearchParams 的基本用法​

URLSearchParams 是一个内置对象,它提供了一种简单的方式来构造和解析 URL 查询参数。要使用 URLSearchParams,我们首先需要创建一个 URLSearchParams 对象。可以通过 new URLSearchParams() 来创建一个空的 URLSearchParams 对象,然后使用 append() 方法向其中添加查询参数。

const params = new URLSearchParams();
params.append('username', 'John');
params.append('password', '123456');

在这个示例中,我们首先创建了一个空的 URLSearchParams 对象 params,然后使用 append() 方法向其中添加了两个查询参数,分别是 username 和 password。

append() 方法接受两个参数,第一个参数是查询参数的名称,第二个参数是查询参数的值。它可以被调用多次,以便将多个查询参数添加到同一个 URLSearchParams 对象中。

除了使用 append() 方法之外,我们还可以使用 set() 方法来设置查询参数。set() 方法与 append() 方法类似,不同之处在于,如果指定的查询参数已经存在,则先删除它,然后再添加新值。

params.set('password', '654321');

在这个示例中,我们使用 set() 方法将 password 的值从 123456 修改为 654321。

另外,我们还可以通过传入 URL 的查询参数部分来创建 URLSearchParams 对象,这样可以自动将查询参数添加到 URLSearchParams 对象中。

const params = new URLSearchParams('?username=John&password=123456');

在这个示例中,我们使用 new URLSearchParams() 构造函数并传入一个带查询参数的 URL,从而创建一个包含查询参数的 URLSearchParams 对象。

将 URLSearchParams 对象转换为查询字符串​

创建 URLSearchParams 对象之后,我们可以将其转换为查询字符串,并将其附加到 URL 中。可以通过 URLSearchParams 对象的 toString() 方法将其转换为查询字符串。

const queryString = params.toString();
const url = `/api/login?${queryString}`;

在这个示例中,我们首先调用了 URLSearchParams 对象的 toString() 方法,将其转换为查询字符串。然后,将查询字符串附加到 URL 中,从而构造了一个带查询参数的 URL。

发送查询参数​

构造了带查询参数的 URL 之后,我们可以使用 fetch API 发送查询参数。

使用 fetch API 发送查询参数​

使用 fetch API 发送查询参数的方式也非常简单。我们可以使用 fetch 的 GET 方法来发送带查询参数的 URL。

const url = `/api/login?${params.toString()}`;
fetch(url).then(response => {
return response.json();
}).then(data => {
console.log(data);
}).catch(error => {
console.error(error);
});

在这个示例中,我们使用 URLSearchParams 对象的 toString() 方法将其转换为查询字符串,并将其附加到 URL 中。然后,使用 fetch 的 GET 方法发送了一个 GET 请求。在获取响应结果后,我们使用 then() 方法将响应结果转换为 JSON 格式并输出到控制台中。如果请求过程中发生了错误,则使用 catch() 方法捕获并输出错误信息。

URLSearchParams 的常见场景​

URLSearchParams 可以被广泛地应用于 Web 开发中的各种场景。下面介绍一些常见的应用场景。

构造 GET 请求的查询参数​

当我们需要向服务器发送 GET 请求时,可以使用 URLSearchParams 来构造查询参数。通过 append() 方法,我们可以方便地将多个查询参数添加到 URLSearchParams 对象中。然后,通过 toString() 方法将其转换为查询字符串,并将其附加到 URL 中。最后,使用 fetch API 发送 GET 请求。

const params = new URLSearchParams();
params.append('username', 'John');
params.append('password', '123456');

const url = `/api/login?${params.toString()}`;

fetch(url).then(response => {
return response.json();
}).then(data => {
console.log(data);
}).catch(error => {
console.error(error);
});

在这个示例中,我们构造了两个查询参数,分别是 username 和 password,然后将其转换为查询字符串,并将其附加到 URL 中。最后,使用 fetch API 发送了查询参数,获取了服务器的响应结果。

解析 URL 查询参数​

除了构造查询参数之外,URLSearchParams 还可以用于解析 URL 查询参数。可以通过 URLSearchParams 的 get() 方法来获取指定查询参数的值。

const searchParams = new URLSearchParams('?username=John&password=123456');
const username = searchParams.get('username'); // 'John'
const password = searchParams.get('password'); // '123456'

在这个示例中,我们首先创建了一个包含查询参数的 URLSearchParams 对象 searchParams,然后使用 get() 方法分别获取了 username 和 password 查询参数的值。

构造 FormData​

在 Web 开发中,我们经常需要向服务器发送表单数据。可以使用 FormData 对象来构造表单数据。URLSearchParams 可以与 FormData 对象一起使用,将查询参数添加到 FormData 中。

const formData = new FormData();
formData.append('username', 'John');
formData.append('password', '123456');

const params = new URLSearchParams();
params.append('token', 'abcdefg');

for (const [key, value] of params) {
formData.append(key, value);
}

在这个示例中,我们首先创建了一个 FormData 对象 formData,然后使用 append() 方法向其中添加了两个表单项,分别是 username 和 password。接着,我们创建了一个 URLSearchParams 对象 params,并使用 append() 方法向其中添加了一个查询参数 token。最后,我们使用一个 for...of 循环将 params 中的所有查询参数依次添加到 formData 中。

总结​

URLSearchParams 是一个用于处理 URL 查询参数的 API。它提供了一系列的方法,可以方便地构造和解析 URL 查询参数。URLSearchParams 可以被广泛地应用于 Web 开发中的各种场景。

提示

一系列的课程让你成为高级前端工程师。课程覆盖工作中所有常用的知识点和背后的使用逻辑,示例全部都为工作项目简化而来,学完即可直接上手开发!

即使你已经是高级前端工程师,在课程里也可能会发现新的知识点和技巧,让你的工作更加轻松!

《React 完全指南》课程,包含 React、React Router 和 Redux 详细介绍,所有示例改编自真实工作代码。点击查看详情。

《Vue 3.x 全家桶完全指南与实战课程》课程,包括 Vue 3.x、TypeScript、Vue Router 4.x、Vuex 4.x 所有初级到高级的语法特性详解,让你完全胜任 Vue 前端开发的工作。点击查看详情。

《React即时通信UI实战》课程,利用 Storybook、Styled-components、React-Spring 打造属于自己的组件库。

《JavaScript 基础语法详解》本人所著图书,包含 JavaScript 全面的语法知识和新特性, 可在京东、当当、淘宝等各大电商购买