javascript中发送带查询参数的get请求,应将参数拼接至url或用urlsearchparams自动编码;手动拼接需对值调用encodeuricomponent,而urlsearchparams更安全灵活,支持对象/数组初始化及动态增删,且get请求不可含body或content-type头。

在 JavaScript 中使用 Fetch API 发送带 URL 查询参数的请求,核心是把参数拼接到 URL 后面,或用 URLSearchParams 自动编码生成合法的查询字符串。
手动拼接查询字符串(适合简单、固定参数)
直接在 URL 字符串后添加 ?key1=value1&key2=value2。注意:必须对值做 encodeURIComponent() 编码,避免特殊字符(如空格、中文、&、=)破坏 URL 结构。
例如:
const baseUrl = 'https://api.example.com/search';
const params = `q=${encodeURIComponent('前端 fetch')} &page=${encodeURIComponent('2')}`;
fetch(`${baseUrl}?${params}`)
.then(res => res.json())
.then(data => console.log(data));
用 URLSearchParams 构建查询参数(推荐,更安全灵活)
URLSearchParams 会自动处理编码和拼接,支持对象、数组、键值对等多种初始化方式,也方便动态增删参数。
常见用法:
- 传入对象:
new URLSearchParams({ q: 'fetch api', page: '1' }) - 传入数组:
new URLSearchParams([['q', 'fetch'], ['page', '1']]) - 动态添加:
params.append('sort', 'date')
示例:
const url = new URL('https://api.example.com/items');
const params = new URLSearchParams({
category: 'javascript',
limit: 10,
offset: 0
});
url.search = params; // 自动编码并赋值
fetch(url)
.then(res => res.json())
.then(data => console.log(data));
注意 GET 请求不需要额外设置 headers 或 body
GET 请求的参数只应在 URL 中,不要在 body 里传数据,也不要设 Content-Type。Fetch 会自动识别为 GET(不写 method: 'GET' 也默认如此)。
错误写法(不生效或报错):
// ❌ 错误:GET 不应有 body
fetch('/api', { method: 'GET', body: JSON.stringify({q: 'test'}) });
// ❌ 错误:多余且可能干扰
headers: { 'Content-Type': 'application/json' }
处理中文、空格、符号等易出错的值
手动拼接时,漏掉 encodeURIComponent 是常见错误。比如 'hello world' 不编码会变成 hello%20world,但若没编码就直接拼,空格会让 URL 截断。
URLSearchParams 内部已自动调用编码,所以更可靠。例如:
const params = new URLSearchParams();
params.set('q', '前端开发 & 实战'); // ✅ 自动转为 %E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%20%26%20%E5%AE%9E%E6%88%98
console.log(params.toString());
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











