You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Axios GET请求URL编码错误,如何修改代码获取正确编码?

解决Axios GET请求中q参数双重编码的问题

问题核心是双重编码:你手动对q参数的JSON字符串执行了encodeURIComponent处理,但Axios本身会自动对params中的所有参数值做URL编码,导致最终q被编码两次(比如%7B被再次编码为%257B),和服务器期望的编码格式不符。

修改方案

直接移除手动的encodeURIComponent,将JSON字符串直接赋值给q参数,让Axios负责完成正确的编码:

const myOrg = await fetchMyOrg();

const response = await api.get<Resp<Asset>>('/asset/assets', {
  headers: { 'Accept-Version': '0.24.0.0' },
  params: {
    q: JSON.stringify({
      organizationId: myOrg.id, // 010a87ba-2e19-4ae7-b64e-a5496eaa825e
      ...(tags.length > 0 && { tags }), // ['Tag 1', 'Router']
    }),
    page: currentPage,
    size,
    sort: 'lastUpdateDateTime',
    dir: -1,
  },
});

可选:匹配服务器期望的带空格JSON格式

如果服务器要求q对应的JSON字符串带有缩进空格(从你给出的正确编码能看到%20对应的空格),可以给JSON.stringify添加格式化参数,生成带缩进的字符串,Axios会自动将空格编码为%20:

q: JSON.stringify({
  organizationId: myOrg.id,
  ...(tags.length > 0 && { tags }),
}, null, 2), // 第三个参数2表示缩进2个空格,生成带格式的JSON字符串

调整后生成的URL编码会和服务器期望的完全一致。

内容的提问来源于stack exchange,提问作者wyc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:05:13