有这样的axios实例
// @flow
import axios, { type Axios } from 'axios';
import { HOST } from 'constants/host';
// Set config defaults when creating the instance
export const AppApi = axios.create({
baseURL: `${HOST.APP_API.URL}${HOST.APP_API.API_PREFIX}`,
});
export const MenuApi = axios.create({
baseURL: `${HOST.MENU_API.URL}${HOST.MENU_API.API_PREFIX}`,
});
export const setAuthToken = (authToken: string, api: Axios) => {
api.defaults.headers.common['Authorization'] = authToken;
};
在那里您会注意到方便的setAuthToken
函数。
在我获得身份验证令牌并将其设置为实例后使用。
但是每当我更改任何实例标头时,所有其他实例也会更改。
甚至默认的axios对象。 如果我愿意
axios.defaults.headers.common['Authorization'] = 'afds';
所有实例都会更改。
这是一个错误,还是我在这里错过了什么?
这是如何在文档中完成的。
https://github.com/axios/axios
请参阅“自定义实例默认设置”
答案 0 :(得分:0)
这是axios的已知错误。
解决方法是像这样添加空的对象层次结构。
export const AppApi = axios.create({
baseURL: `${HOST.APP_API.URL}${HOST.APP_API.API_PREFIX}`,
headers: { common: {} },
});
export const MenuApi = axios.create({
baseURL: `${HOST.MENU_API.URL}${HOST.MENU_API.API_PREFIX}`,
headers: { common: {} },
});
更多信息在这里
答案 1 :(得分:-1)
您只需要更改该实例的默认值,而不是axios。
export const MenuApi = axios.create({
baseURL: `${HOST.MENU_API.URL}${HOST.MENU_API.API_PREFIX}`,
});
例如,您可以将令牌设置为
MenuApi.defaults.headers.common['Authorization'] = 'afds';
不是
axios.defaults.headers.common['Authorization'] = 'afds';
否则,它将在所有实例中更改。