如何更新此 axios 服务以便能够有条件地决定使用哪个 API URL?

How to update this axios service for being able conditionally decide which API URL to use?

我有以下轴服务:

   const instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'Authorization': 'Bearer '+token}
});

我需要有条件地从外部传递 isAdmin,以便能够在此处切换 API URL。怎么实现。

我们可以将值传递给构造函数,并将其传递给 initInstance 方法,然后 return URL 取决于 isAdmin 的值。

class AxiosService {
    // ...

  constructor(isAdmin = false) {
    this.initInstance(isAdmin);
  }

  initInstance(isAdmin) {
    this.axiosInstance = axios.create({
      baseURL: isAdmin ? '/api/admin/v1' : '/api/v1',
      timeout: 5000
    });
        
        // ...
  }
    
    // ...
}

要使用这些,我们现在要...

const axiosService = new AxiosService(true); // admin url will be used

您可以为每个 baseURL 使用多个实例,并通过 isAdmin 条件调用实例。但是,您可以配置将应用于每个请求的默认值。

import axios from "axios";
    
/* default config for each request */
axios.defaults.headers['Authorization'] = 'Bearer ' + token;
axios.defaults.timeout = 1000;

const adminAxios = axios.create({
    baseURL: 'https://some-domain.com/api/'
});
    
const nonAdminAxios = axios.create({
    baseURL: 'https://other-some-domain.com/api/'
});
    
    
const getInstance = (isAdmin) => isAdmin ? adminAxios : nonAdminAxios;