Tengo el siguiente servicio de eje:
const instance = axios.create({ baseURL: 'https://some-domain.com/api/', timeout: 1000, headers: {'Authorization': 'Bearer '+token} });Necesito pasar condicionalmente isAdmin desde afuera para poder cambiar la URL de la API aquí. Como se puede lograr.
Podríamos pasar el valor al constructor y pasarlo al método initInstance , luego devolver la URL dependiendo del valor de isAdmin .
class AxiosService { // ... constructor(isAdmin = false) { this.initInstance(isAdmin); } initInstance(isAdmin) { this.axiosInstance = axios.create({ baseURL: isAdmin ? '/api/admin/v1' : '/api/v1', timeout: 5000 }); // ... } // ... }Para usar estos, ahora iríamos...
const axiosService = new AxiosService(true); // admin url will be usedPuede usar varias instancias para cada baseURL y llamar a la instancia mediante la condición isAdmin . Sin embargo, puede configurar los valores predeterminados que se aplicarán a cada solicitud.
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;