【发布时间】:2021-11-12 08:57:48
【问题描述】:
这是我的全局 Axios
import axios from 'axios';
import { storage } from 'containers/login/utils/local-storage';
const token = storage.getToken();
const axiosInstance = axios.create({
baseURL: process.env.REACT_APP_API_URL,
});
axiosInstance.interceptors.response.use((response) => {
response.config.headers = {
Authorization: `Bearer ${token}`,
};
return response;
}, (error) => Promise.reject(error));
axiosInstance.interceptors.request.use((request) => {
request.headers = {
Authorization: `Bearer ${token}`,
};
return request;
}, (error) => Promise.reject(error));
export default axiosInstance;
在这个请求中我需要添加新的标头:invoiceLimit = `${-invoiceLimit}`
export const updateInvoiceLimit = async (
invoiceLimit: string,
)
: Promise<ReturnDataType> => {
let result: ReturnDataType = {} as ReturnDataType;
try {
axios.defaults.headers.common.invoiceLimit = `${-invoiceLimit}`;
result = await axios.put(`${CREDITS_URL.CREDITS}/invoice/limit`);
return result;
} catch (error) {
SnackBarUtils.error(`${(error as Error).message}. ${result.data.message}`);
}
return result;
};
当我使用这个时:axios.defaults.headers.common.invoiceLimit = `${-invoiceLimit}`;
header 添加到 Axios 默认值中,但是当我调用 axios.put 时,这个自定义标头消失了,只留下了拦截器的全局标头。
我知道这不是最佳实践,但它的客户 API 和我不想创建另一个 Axios 实例,而是使用一个全局实例。
【问题讨论】:
标签: javascript axios