icemilk
Version:
Shanghai jinbaozheng easy network technology Co.,Ltd sdk
45 lines (42 loc) • 1.79 kB
text/typescript
import {AxiosRequestConfig, AxiosResponse} from "axios";
import UrlTool from "../tool/JToolUrl";
import {GlobalValueRegistry} from "../../types";
export default interface INetworkDelegate{
globalParams: GlobalValueRegistry;
globalHeaders: GlobalValueRegistry;
globalBodyData: GlobalValueRegistry;
requestInterceptor?(config: AxiosRequestConfig): AxiosRequestConfig;
requestInterceptorError?(error: Error): Promise<never>;
responseInterceptor?(response: AxiosResponse): AxiosResponse;
responseInterceptorError?(error: Error): Promise<never>;
responseDataInterceptor?(data: any, response?: AxiosResponse): any;
responseErrorInterceptor?(error: Error, response?: AxiosResponse): Error;
}
export const DEFAULT_DELEGATE: INetworkDelegate = {
globalParams: () => {},
globalHeaders: () => {},
globalBodyData: () => {},
requestInterceptor: (config: AxiosRequestConfig): AxiosRequestConfig => {
// Do something before request is sent
console.log(`${config.method} ${UrlTool.urlFromPortion(config.url, '', config.params)}`);
return config;
},
requestInterceptorError: (error: Error): Promise<never> => {
// Do something with request error
return Promise.reject(error);
},
responseInterceptor: (response: AxiosResponse): AxiosResponse => {
// Do something with response data
return response;
},
responseInterceptorError: (error: Error): Promise<never> => {
// Do something with response error
return Promise.reject(error);
},
responseDataInterceptor: (data: any, response?: AxiosResponse): any => {
return data;
},
responseErrorInterceptor: (error: Error, response?: AxiosResponse): Error => {
return error;
}
};