从一个get axios请求(ReactJS)中删除默认参数

mznpcxlj  于 2022-12-29  发布在  React
关注(0)|答案(1)|浏览(203)

我问题是,当使用axios.create创建的带有默认参数的服务时,如果不使用该参数,则返回值是错误的,但是,如果不发送该参数,则返回值是正确的,因此我需要从某些调用中删除该参数。
我使用axios.create创建了一个服务,该服务使用补充url进行调用,如下所示:

API.ts

export const service = axios.create({
  baseURL: "API_URL",
  timeout: 3000,
  headers: {
    Authorization: `Bearer ${SOME_ENV_TOKEN}`,
    "Content-Type": "application/json;charset=utf-8",
  },
  params: {
    keys: `${SOME_ENV_KEY}`,
  },
});

在我的钩子中,该服务用于获取传递补充url的数据,如下所示:

使用获取用户.ts

const fetchUsers: IUsers = await service
      .get<Promise<IUsers>>(`/users/`)
      .then((response) => {
        return response.data;
      });

然而,在一个或两个钩子中的一些调用没有使用参数来返回正确的值,当参数被传递而不需要时,从API返回的是错误的。
我需要的是删除一些调用中的参数以获得正确的值。
我已经试过拦截器了,但是所有的API调用都删除了参数。
我试图传递一个空对象,但params的使用方式是相同的:

使用获取用户.ts

const fetchUsers: IUsers = await service
      .get<Promise<IUsers>>(`/users/`, {})
      .then((response) => {
        return response.data;
      });

我也尝试过传递一个空参数(赋值空字符串或null),但是参数被作为null发送,这会从API返回错误的值。

使用获取用户.ts

const fetchUsers: IUsers= await service
      .get<Promise<IUsers>>(`/users/`, {params: {})
      .then((response) => {
        return response.data;
      });

那么,有没有一种方法可以使用这个方法从选定钩子的axios调用中删除默认参数呢?
感谢所有能帮忙的人。

0x6upsns

0x6upsns1#

在使用有缺陷的旧版本axios(如0.19.0 was)之前,请求参数将与示例中的默认参数合并,而不是覆盖。
而且由于undefined值从params加上
指定的配置将与示例配置合并。
那么

const fetchUsers: IUsers= await service
  .get<Promise<IUsers>>(`/users/`, { params: { keys: undefined } })
  .then((response) => {
    return response.data;
  });

应该可以正常工作。至少我用1.2.1是这样工作的

相关问题