typescript 如何在post请求中发送拦截器中定义的参数?

wbgh16ku  于 2023-03-04  发布在  TypeScript
关注(0)|答案(1)|浏览(200)

首先我在axios中尝试这个请求拦截器;如果参数是uber,那么使用token,如果参数不是uber,我的意思是不要使用token。

  • 〉之后,我如何给予uber作为项目文件中customAxios请求的参数?当customAxios在项目中工作时,我希望根据该uber参数设置授权。因为我的一些API请求不需要令牌,而我的一些API请求需要令牌。如果您有不同的想法,我可以听到您的意见

我的axios.ts文件(配置)

let uber:any

const customAxios = axios.create({
  baseURL: configEnv.apiBaseURL,
});

  customAxios.interceptors.request.use(
    async (config) => {
      if (config.headers) {
        console.log('token', `Bearer ${token}`)
        config.headers['Authorization'] = uber ? `Bearer ${token}` : ''
        return config;
      }
      return config;
    },
    (error) => {
      Promise.reject(error);
    }
  )

示例axios发布在文件中;

import customAxios from "../../../core/axios";

   let res = await customAxios({
                    method: 'post',
                    url: "/v1/nodes",
                    data: {},
                })
vptzau2j

vptzau2j1#

为了达到您的目的,您可以在请求的config对象中传递uber参数,并根据是否需要使用令牌将其设置为truefalse
下面是更新customAxios示例以从请求的config对象获取uber参数的方法:

const customAxios = axios.create({
  baseURL: configEnv.apiBaseURL,
});

customAxios.interceptors.request.use(
  async (config) => {
    if (config.headers) {
      console.log('token', `Bearer ${token}`);
      const { uber } = config.params || {};
      config.headers['Authorization'] = uber ? `Bearer ${token}` : '';
      return config;
    }
    return config;
  },
  (error) => {
    Promise.reject(error);
  }
);

在您的请求中,可以在config对象中传递uber参数,如下所示:

let res = await customAxios({
  method: 'post',
  url: "/v1/nodes",
  data: {},
  params: {
    uber: true, // or false depending on your needs
  },
});

通过这样做,customAxios示例将使用请求的config对象中的uber参数来确定是否设置Authorization头,如果uber参数为true,它将使用令牌设置Authorization头,否则,它将不设置头。

相关问题