set baseURL dans les intercepteurs ne fonctionne pas.
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);
})
regardez-moi Valeurs par défaut de l'instance personnalisée axios.all n'est pas une fonction # 948 mon fonctionnement normal seulement tout n'est pas une fonction
Expérimenté le même problème. Il peut s'agir plus d'un problème conceptuel que d'un détail de mise en œuvre. Il me semble que définir une baseURL est une façon de dire "ajouter ceci à chaque demande", ce qui semble un peu inutile lorsque vous le définissez à chaque demande. Bien qu'un cas puisse certainement être fait pour un conditionnel comme :
axios.interceptors.request.use((config) => {
return getAge()
.then((age) => {
if(age < 10){ config.baseURL = 'https://young.com' }
else { config.baseURL = 'https://young.com' }
})
Mais ça ne marche pas. Définir une valeur par défaut globale comme celle-ci :
axios.defaults.baseURL = 'https://example.com';
tout comme le fait de passer une configuration avec la requête :
axios.post('/extra', { baseURL: 'https://example.com' })
Dans les deux cas, le champ 'url' de la configuration est ' https://example.com/extra ', mais la définition de la baseURL dans l'intercepteur ne met à jour que 'config.baseURL'. Je veux dire qu'il est logique pourquoi, vous mettez littéralement à jour ce champ, mais ce serait bien s'il mettait également à jour le champ d'URL ou au moins mentionné dans la documentation (de préférence en gros caractères gras) que la définition de baseURL dans un intercepteur est inutile/déconseillé.
@ Baoyx007, vous pouvez toujours modifier manuellement la valeur 'url' dans la configuration
service.interceptors.request.use(config => {
//config.baseURL = 'dd'
config.url = BASE_URL + config.url
return config;
ou à chaque demande
axios.get('/hello', { baseURL: BASE_URL })
Nœud v7.10.0
Axios v0.16.12
Corrigé en #950
Commentaire le plus utile
Expérimenté le même problème. Il peut s'agir plus d'un problème conceptuel que d'un détail de mise en œuvre. Il me semble que définir une baseURL est une façon de dire "ajouter ceci à chaque demande", ce qui semble un peu inutile lorsque vous le définissez à chaque demande. Bien qu'un cas puisse certainement être fait pour un conditionnel comme :
Mais ça ne marche pas. Définir une valeur par défaut globale comme celle-ci :
axios.defaults.baseURL = 'https://example.com';
tout comme le fait de passer une configuration avec la requête :
axios.post('/extra', { baseURL: 'https://example.com' })
Dans les deux cas, le champ 'url' de la configuration est ' https://example.com/extra ', mais la définition de la baseURL dans l'intercepteur ne met à jour que 'config.baseURL'. Je veux dire qu'il est logique pourquoi, vous mettez littéralement à jour ce champ, mais ce serait bien s'il mettait également à jour le champ d'URL ou au moins mentionné dans la documentation (de préférence en gros caractères gras) que la définition de baseURL dans un intercepteur est inutile/déconseillé.
@ Baoyx007, vous pouvez toujours modifier manuellement la valeur 'url' dans la configuration
ou à chaque demande
Nœud v7.10.0
Axios v0.16.12