establecer baseURL en interceptores no funciona.
const service = axios.create({
baseURL: 'http://localhost/'
});
service.interceptors.request.use(config => {
config.baseURL = 'dd'
console.log(config.url) // output : http://localhost/././../
return config;
}, error => {
// Do something with request error
console.error(error); // for debug
Promise.reject(error);
})
Mírame Valores predeterminados de instancia personalizada axios.all no es una función # 948 mi funcionamiento es normal solo que no todo es una función
Experimentó el mismo problema. Puede ser más un problema conceptual que un detalle de implementación. Me parece que establecer una baseURL es una forma de decir "anteponer esto a cada solicitud", lo que parece un poco inútil cuando lo configuras en cada solicitud. Aunque definitivamente se podría argumentar a favor de un condicional como:
axios.interceptors.request.use((config) => {
return getAge()
.then((age) => {
if(age < 10){ config.baseURL = 'https://young.com' }
else { config.baseURL = 'https://young.com' }
})
Pero no funciona. Establecer un valor predeterminado global como este hace:
axios.defaults.baseURL = 'https://example.com';
al igual que pasar una configuración con la solicitud:
axios.post('/extra', { baseURL: 'https://example.com' })
En ambos casos, el campo 'url' de la configuración es ' https://example.com/extra ', pero la configuración de baseURL en el interceptor solo actualiza 'config.baseURL'. Quiero decir que tiene sentido por qué, literalmente solo está actualizando ese campo, pero sería bueno si también actualizara el campo de la URL o al menos se mencionara en los documentos (preferiblemente en letras grandes y negritas) que establecer baseURL en un interceptor es inútil / no recomendado.
@ Baoyx007 siempre puede cambiar el valor 'url' en la configuración manualmente
service.interceptors.request.use(config => {
//config.baseURL = 'dd'
config.url = BASE_URL + config.url
return config;
o en cada solicitud
axios.get('/hello', { baseURL: BASE_URL })
Nodo v7.10.0
Axios v0.16.12
Corregido en # 950
Comentario más útil
Experimentó el mismo problema. Puede ser más un problema conceptual que un detalle de implementación. Me parece que establecer una baseURL es una forma de decir "anteponer esto a cada solicitud", lo que parece un poco inútil cuando lo configuras en cada solicitud. Aunque definitivamente se podría argumentar a favor de un condicional como:
Pero no funciona. Establecer un valor predeterminado global como este hace:
axios.defaults.baseURL = 'https://example.com';
al igual que pasar una configuración con la solicitud:
axios.post('/extra', { baseURL: 'https://example.com' })
En ambos casos, el campo 'url' de la configuración es ' https://example.com/extra ', pero la configuración de baseURL en el interceptor solo actualiza 'config.baseURL'. Quiero decir que tiene sentido por qué, literalmente solo está actualizando ese campo, pero sería bueno si también actualizara el campo de la URL o al menos se mencionara en los documentos (preferiblemente en letras grandes y negritas) que establecer baseURL en un interceptor es inútil / no recomendado.
@ Baoyx007 siempre puede cambiar el valor 'url' en la configuración manualmente
o en cada solicitud
Nodo v7.10.0
Axios v0.16.12