javascript - axios拦截请求回调不起作用
问题描述
我有以下代码
import {AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse} from "axios";
import { request } from "http";
const onRequest = (config: AxiosRequestConfig): AxiosRequestConfig => {
console.log('in-2')
console.info(`[request] [${JSON.stringify(config)}]`);
config = {...config,baseURL :"https://api.test.com",headers: { ...config.headers,...{'Authorization':"token"} } }
return config;
}
//process.env.REACT_API_URL
const onRequestError = (error: AxiosError): Promise<AxiosError> => {
console.error(`[request error] [${JSON.stringify(error)}]`);
return Promise.reject(error);
}
const onResponse = (response: AxiosResponse): AxiosResponse => {
console.info(`[response] [${JSON.stringify(response)}]`);
return response;
}
const onResponseError = (error: AxiosError): Promise<AxiosError> => {
console.error(`[response error] [${JSON.stringify(error)}]`);
return Promise.reject(error);
}
export function setupInterceptorsTo(axiosInstance: AxiosInstance): AxiosInstance {
console.log('in',axiosInstance)
axiosInstance.interceptors.request.use(onRequest,onRequestError );
axiosInstance.interceptors.response.use(onResponse, onResponseError);
return axiosInstance;
}
然后
import {setupInterceptorsTo} from "./Interceptors";
import axios from "axios";
setupInterceptorsTo(axios)
export default axios.create();
但是 onRequest 回调永远不会执行
我也试过喜欢
import {setupInterceptorsTo} from "./Interceptors";
import axios from "axios";
setupInterceptorsTo(axios)
export default axios.create({baseURL :"https://api.test.com"});
但是 onRequest 或 onRequestError 回调仍然不起作用,因为我正在提供虚拟 API 调用,这会在控制台上引发错误。
我认为应该在任何请求之前调用 onRequest 以便我们可以修改请求,并且如果出现任何错误,包括 404,则应该调用 onRequestError,
是不是我的想法错了。
请指教。谢谢
解决方案
推荐阅读
- java - 对象变量的 L 缓存自动优化?
- python - asyncio:从执行器中的异步函数收集结果
- python - 使用 Python Docker SDK 命名图像并创建容器
- angular - Angular 5:在自定义验证器中调用服务方法
- javascript - 我可以从我的下拉选择变量中删除“null”吗
- css - 图像图像位于顶部/左侧的引导卡,取决于列断点?
- ios - 如何更新/重新加载 UICollectionView 中的不可见单元格?
- bower - 当从托管凉亭包的工件中删除匿名访问时,无法使用 .bowerrc 中的凭据进行“凉亭安装”
- angular - Angular 7 + NG Bootstrap,从服务中打开模式?
- ef-code-first - 用 EF Code First 改变 localdb 的路径