首页 > 解决方案 > axios 使用重复的参数打字稿

问题描述

我正在使用无法再调整的现有后端。我需要打一个电话来获取所有消息。其中一个参数是类型,这可用于从特定类型获取所有消息。后端开发人员告诉我,我必须多次使用它,如下所示:

/api/message?type=test&type=test2

所以我尝试将它作为一个数组发送,结果是:

/api/message?type[]=test&type[]=test2

找到一些关于 SO 的信息让我使用了 QS 但这也没有给我我需要的结果

api/message?type%5B0%5D=test&type%5B1%5D=test2

export const getMessages = () =>
  baseApi
    .get('/message', {
      params: {
        type: [
          'test',
          'test2'
        ]
      },
      paramsSerializer: (params) => {
        return qs.stringify(params)
      }
    })
    .then((r) => r.data as Message[])

标签: javascriptreactjstypesaxios

解决方案


您可以使用附加方法。喜欢(URLSearchParams):

const params = new URLSearchParams()
params.append("type","test")
params.append("type","test2")

然后,您像以前一样在请求中设置参数:

export const getMessages = () =>
  baseApi
    .get('/message', {
      params: {
        params
      },
      paramsSerializer: (params) => {
        return qs.stringify(params)
      }
    })
    .then((r) => r.data as Message[])

推荐阅读