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

如何在React与Axios中传递数组类型的查询字符串?

Axios传递数组类型查询字符串问题解决

后端API已通过Postman验证可用,支持通过重复的receiver查询参数过滤数据,示例端点:

localhost:3040/v2/feedback/filter/average-ratings?receiver=62c2dd106742823a69f98dac&receiver=62aec70881e46a4794b3a424

但前端实现时,后端返回receiver未定义错误,原请求代码如下:

export const filterAverageRating = async (receiver) => {
  console.log('Receiver ID', receiver); //['62c2dd106742823a69f98dac', '62aec70881e46a4794b3a424']
  const accessJWT = sessionStorage.getItem('accessJWT');
  const config = {
    headers: {
      'Content-Type': 'application/json',
      Authorization: accessJWT,
    },
  };
  const { data } = await axios.get(
    ENDPOINT_URL + 'filter/average-ratings',
    config,
    { params: { receiver } }
  );

  return data;
};

问题原因

Axios的get方法签名是axios.get(url[, config]),第三个参数不会被识别为配置项。你把params单独作为第三个参数传递,导致Axios没有把数组参数添加到查询字符串中,后端自然无法获取到receiver参数。

修正后的代码

将params合并到第二个参数的config对象中:

export const filterAverageRating = async (receiver) => {
  console.log('Receiver ID', receiver); //['62c2dd106742823a69f98dac', '62aec70881e46a4794b3a424']
  const accessJWT = sessionStorage.getItem('accessJWT');
  const config = {
    headers: {
      'Content-Type': 'application/json',
      Authorization: accessJWT,
    },
    params: { receiver } // 将params放入config对象内
  };
  const { data } = await axios.get(
    ENDPOINT_URL + 'filter/average-ratings',
    config
  );

  return data;
};

说明

Axios默认会将数组类型的params参数格式化为重复的key=value形式,也就是生成和Postman示例一致的查询字符串,这样后端就能正确识别receiver数组参数了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:39:23