set baseURL in Interceptors funktioniert nicht.
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);
})
Look me Custom Instance Defaults axios.all is not a function #948 my working normal only all is not a function
Habe das gleiche Problem erlebt. Es könnte sich eher um ein konzeptionelles Problem als um ein Implementierungsdetail handeln. Mir scheint, dass das Festlegen einer baseURL eine Möglichkeit ist, "jeder Anfrage voranzustellen", was irgendwie sinnlos erscheint, wenn Sie sie bei jeder Anfrage festlegen. Obwohl ein Fall für eine Bedingung wie:
axios.interceptors.request.use((config) => {
return getAge()
.then((age) => {
if(age < 10){ config.baseURL = 'https://young.com' }
else { config.baseURL = 'https://young.com' }
})
Aber es funktioniert nicht. Das Festlegen eines globalen Standardwerts wie folgt:
axios.defaults.baseURL = 'https://example.com';
ebenso wie die Übergabe einer Konfiguration mit der Anfrage:
axios.post('/extra', { baseURL: 'https://example.com' })
In beiden Fällen ist das 'url'-Feld der Konfiguration ' https://example.com/extra ', aber das Setzen der baseURL im Interceptor aktualisiert nur 'config.baseURL'. Ich meine, es macht Sinn, warum Sie buchstäblich nur dieses Feld aktualisieren, aber es wäre schön, wenn es auch das URL-Feld aktualisiert oder zumindest in den Dokumenten (vorzugsweise in großen Fettdruck) erwähnt, dass die Einstellung von baseURL in einem Interceptor ist nutzlos/nicht empfehlenswert.
@Baoyx007 Sie können den 'url'-Wert in der Konfiguration jederzeit manuell ändern
service.interceptors.request.use(config => {
//config.baseURL = 'dd'
config.url = BASE_URL + config.url
return config;
oder auf jede Anfrage
axios.get('/hello', { baseURL: BASE_URL })
Knoten v7.10.0
Axios v0.16.12
Behoben in #950
Hilfreichster Kommentar
Habe das gleiche Problem erlebt. Es könnte sich eher um ein konzeptionelles Problem als um ein Implementierungsdetail handeln. Mir scheint, dass das Festlegen einer baseURL eine Möglichkeit ist, "jeder Anfrage voranzustellen", was irgendwie sinnlos erscheint, wenn Sie sie bei jeder Anfrage festlegen. Obwohl ein Fall für eine Bedingung wie:
Aber es funktioniert nicht. Das Festlegen eines globalen Standardwerts wie folgt:
axios.defaults.baseURL = 'https://example.com';
ebenso wie die Übergabe einer Konfiguration mit der Anfrage:
axios.post('/extra', { baseURL: 'https://example.com' })
In beiden Fällen ist das 'url'-Feld der Konfiguration ' https://example.com/extra ', aber das Setzen der baseURL im Interceptor aktualisiert nur 'config.baseURL'. Ich meine, es macht Sinn, warum Sie buchstäblich nur dieses Feld aktualisieren, aber es wäre schön, wenn es auch das URL-Feld aktualisiert oder zumindest in den Dokumenten (vorzugsweise in großen Fettdruck) erwähnt, dass die Einstellung von baseURL in einem Interceptor ist nutzlos/nicht empfehlenswert.
@Baoyx007 Sie können den 'url'-Wert in der Konfiguration jederzeit manuell ändern
oder auf jede Anfrage
Knoten v7.10.0
Axios v0.16.12