set baseURL di pencegat tidak berfungsi.
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);
})
lihat saya Contoh kustom default axios.all bukan fungsi #948 saya bekerja normal hanya semua bukan fungsi
Mengalami masalah yang sama. Ini mungkin lebih merupakan masalah konseptual daripada detail implementasi. Bagi saya, mengatur baseURL adalah cara untuk mengatakan "tambahkan ini ke setiap permintaan", yang sepertinya tidak ada gunanya ketika Anda mengaturnya di setiap permintaan. Meskipun sebuah kasus pasti dapat dibuat untuk kondisi seperti:
axios.interceptors.request.use((config) => {
return getAge()
.then((age) => {
if(age < 10){ config.baseURL = 'https://young.com' }
else { config.baseURL = 'https://young.com' }
})
Tapi itu tidak berhasil. Menyetel default global seperti ini:
axios.defaults.baseURL = 'https://example.com';
seperti halnya melewati konfigurasi dengan permintaan:
axios.post('/extra', { baseURL: 'https://example.com' })
Dalam kedua kasus, bidang 'url' dari konfigurasi adalah ' https://example.com/extra ', tetapi menyetel baseURL di pencegat hanya memperbarui 'config.baseURL'. Maksud saya masuk akal mengapa, Anda benar-benar hanya memperbarui bidang itu, tetapi alangkah baiknya jika memperbarui bidang url juga atau setidaknya disebutkan dalam dokumen (sebaiknya dalam huruf tebal besar) bahwa pengaturan baseURL di pencegat adalah tidak berguna/tidak dianjurkan.
@ Baoyx007 Anda selalu dapat mengubah nilai 'url' di konfigurasi secara manual
service.interceptors.request.use(config => {
//config.baseURL = 'dd'
config.url = BASE_URL + config.url
return config;
atau pada setiap permintaan
axios.get('/hello', { baseURL: BASE_URL })
Simpul v7.10.0
Axios v0.16.12
Diperbaiki di #950
Komentar yang paling membantu
Mengalami masalah yang sama. Ini mungkin lebih merupakan masalah konseptual daripada detail implementasi. Bagi saya, mengatur baseURL adalah cara untuk mengatakan "tambahkan ini ke setiap permintaan", yang sepertinya tidak ada gunanya ketika Anda mengaturnya di setiap permintaan. Meskipun sebuah kasus pasti dapat dibuat untuk kondisi seperti:
Tapi itu tidak berhasil. Menyetel default global seperti ini:
axios.defaults.baseURL = 'https://example.com';
seperti halnya melewati konfigurasi dengan permintaan:
axios.post('/extra', { baseURL: 'https://example.com' })
Dalam kedua kasus, bidang 'url' dari konfigurasi adalah ' https://example.com/extra ', tetapi menyetel baseURL di pencegat hanya memperbarui 'config.baseURL'. Maksud saya masuk akal mengapa, Anda benar-benar hanya memperbarui bidang itu, tetapi alangkah baiknya jika memperbarui bidang url juga atau setidaknya disebutkan dalam dokumen (sebaiknya dalam huruf tebal besar) bahwa pengaturan baseURL di pencegat adalah tidak berguna/tidak dianjurkan.
@ Baoyx007 Anda selalu dapat mengubah nilai 'url' di konfigurasi secara manual
atau pada setiap permintaan
Simpul v7.10.0
Axios v0.16.12