如何更新此 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;
我有以下轴服务:
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;