تعيين 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);
})
انظر إلي الافتراضيات المخصصة للمثيلات 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
أكسيوس 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
أكسيوس v0.16.12