definir baseURL em interceptores não está funcionando.
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);
})
olhe para mim Padrões de instância personalizados axios.all não é uma função # 948 meu trabalho normal apenas tudo não é uma função
Experimentou o mesmo problema. Pode ser mais uma questão conceitual do que um detalhe de implementação. Parece-me que definir um baseURL é uma maneira de dizer "prefixe isso a cada solicitação", o que parece meio sem sentido quando você define em cada solicitação. Embora um caso definitivamente pudesse ser feito para uma 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' }
})
Mas não funciona. Definir um padrão global como este:
axios.defaults.baseURL = 'https://example.com';
assim como passar uma configuração com a solicitação:
axios.post('/extra', { baseURL: 'https://example.com' })
Em ambos os casos, o campo 'url' da configuração é ' https://example.com/extra ', mas definir o baseURL no interceptor atualiza apenas 'config.baseURL'. Quer dizer, faz sentido, você está literalmente apenas atualizando esse campo, mas seria bom se ele atualizasse o campo url também ou pelo menos mencionasse na documentação (de preferência em letras grandes em negrito) que definir baseURL em um interceptor é inútil / não recomendado.
@ Baoyx007 você sempre pode apenas alterar o valor 'url' na configuração manualmente
service.interceptors.request.use(config => {
//config.baseURL = 'dd'
config.url = BASE_URL + config.url
return config;
ou em cada pedido
axios.get('/hello', { baseURL: BASE_URL })
Node v7.10.0
Axios v0.16.12
Fixo em # 950
Comentários muito úteis
Experimentou o mesmo problema. Pode ser mais uma questão conceitual do que um detalhe de implementação. Parece-me que definir um baseURL é uma maneira de dizer "prefixe isso a cada solicitação", o que parece meio sem sentido quando você define em cada solicitação. Embora um caso definitivamente pudesse ser feito para uma condicional como:
Mas não funciona. Definir um padrão global como este:
axios.defaults.baseURL = 'https://example.com';
assim como passar uma configuração com a solicitação:
axios.post('/extra', { baseURL: 'https://example.com' })
Em ambos os casos, o campo 'url' da configuração é ' https://example.com/extra ', mas definir o baseURL no interceptor atualiza apenas 'config.baseURL'. Quer dizer, faz sentido, você está literalmente apenas atualizando esse campo, mas seria bom se ele atualizasse o campo url também ou pelo menos mencionasse na documentação (de preferência em letras grandes em negrito) que definir baseURL em um interceptor é inútil / não recomendado.
@ Baoyx007 você sempre pode apenas alterar o valor 'url' na configuração manualmente
ou em cada pedido
Node v7.10.0
Axios v0.16.12