установить baseURL в перехватчиках не работает.
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);
})
посмотри мне Custom instance defaults axios.all не является функцией # 948 моя работа нормально только все не является функцией
Испытал ту же проблему. Это может быть скорее концептуальная проблема, чем деталь реализации. Мне кажется, что установка baseURL - это способ сказать «добавлять это к каждому запросу», что кажется бессмысленным, когда вы устанавливаете его для каждого запроса. Хотя определенно можно было бы привести такие условные выражения, как:
axios.interceptors.request.use((config) => {
return getAge()
.then((age) => {
if(age < 10){ config.baseURL = 'https://young.com' }
else { config.baseURL = 'https://young.com' }
})
Но это не работает. Установка глобального значения по умолчанию:
axios.defaults.baseURL = 'https://example.com';
как и передача конфигурации с запросом:
axios.post('/extra', { baseURL: 'https://example.com' })
В обоих случаях поле 'url' конфигурации - ' https://example.com/extra ', но установка baseURL в перехватчике обновляет только 'config.baseURL'. Я имею в виду, что это имеет смысл, почему вы буквально просто обновляете это поле, но было бы неплохо, если бы оно также обновило поле url или, по крайней мере, упомянуло в документах (желательно большими жирными буквами), что установка baseURL в перехватчике бесполезно / не рекомендуется.
@ Baoyx007 вы всегда можете просто вручную изменить значение url в конфиге
service.interceptors.request.use(config => {
//config.baseURL = 'dd'
config.url = BASE_URL + config.url
return config;
или по любому запросу
axios.get('/hello', { baseURL: BASE_URL })
Узел v7.10.0
Axios v0.16.12
Исправлено в # 950
Самый полезный комментарий
Испытал ту же проблему. Это может быть скорее концептуальная проблема, чем деталь реализации. Мне кажется, что установка baseURL - это способ сказать «добавлять это к каждому запросу», что кажется бессмысленным, когда вы устанавливаете его для каждого запроса. Хотя определенно можно было бы привести такие условные выражения, как:
Но это не работает. Установка глобального значения по умолчанию:
axios.defaults.baseURL = 'https://example.com';
как и передача конфигурации с запросом:
axios.post('/extra', { baseURL: 'https://example.com' })
В обоих случаях поле 'url' конфигурации - ' https://example.com/extra ', но установка baseURL в перехватчике обновляет только 'config.baseURL'. Я имею в виду, что это имеет смысл, почему вы буквально просто обновляете это поле, но было бы неплохо, если бы оно также обновило поле url или, по крайней мере, упомянуло в документах (желательно большими жирными буквами), что установка baseURL в перехватчике бесполезно / не рекомендуется.
@ Baoyx007 вы всегда можете просто вручную изменить значение url в конфиге
или по любому запросу
Узел v7.10.0
Axios v0.16.12