98 lines
2.9 KiB
TypeScript
98 lines
2.9 KiB
TypeScript
import axios, {
|
||
AxiosError,
|
||
type AxiosInstance,
|
||
type AxiosRequestConfig,
|
||
AxiosResponse,
|
||
InternalAxiosRequestConfig
|
||
} from "axios";
|
||
import { UrlCheckUtils } from '../utils/index'
|
||
|
||
class AxiosInfra {
|
||
public instance: AxiosInstance;
|
||
|
||
public constructor() {
|
||
this.instance = axios.create({
|
||
baseURL: UrlCheckUtils.check(),
|
||
timeout: Number(window.__APP_CONFIG__.VITE_HTTPTIMEOUT),
|
||
headers: {
|
||
"Content-Type": "application/json"
|
||
}
|
||
});
|
||
this.ResponseInterceptor();
|
||
this.RequestInterceptor();
|
||
}
|
||
|
||
public async get(params: AxiosRequestConfig): Promise<any> {
|
||
return await this.instance.get(<string>params.url, {
|
||
params: params.data,
|
||
headers: Object.assign({ Authorization: localStorage.getItem("token") }, params.headers)
|
||
});
|
||
}
|
||
|
||
public async post(params: AxiosRequestConfig): Promise<any> {
|
||
return await this.instance.post(<string>params.url, params.data, {
|
||
headers: Object.assign({ Authorization: localStorage.getItem("token") }, params.headers)
|
||
})
|
||
}
|
||
|
||
/**
|
||
* Put 请求
|
||
* 请求参数请参考接口:RequestParams
|
||
* @param params
|
||
*/
|
||
public async put(params: AxiosRequestConfig): Promise<any> {
|
||
return await this.instance.put(<string>params.url, params.data)
|
||
}
|
||
|
||
/**
|
||
* delete 请求
|
||
* 请求参数请参考接口:RequestParams
|
||
* @param params
|
||
*/
|
||
public async delete(params: AxiosRequestConfig): Promise<any> {
|
||
return await this.instance.delete(<string>params.url, { params: params.data })
|
||
}
|
||
|
||
/**
|
||
* 响应拦截器
|
||
* @constructor
|
||
*/
|
||
public async ResponseInterceptor(): Promise<void> {
|
||
this.instance.interceptors.response.use(
|
||
(response: AxiosResponse) => {
|
||
return response.data.result;
|
||
},
|
||
(error: AxiosError) => {
|
||
console.log(`
|
||
❌ 请求错误 ❌
|
||
1、基地址: ${ error.config?.baseURL }
|
||
2、短地址: ${ error.config?.url }
|
||
3、请求 方式: ${ error.config?.method }
|
||
4、请求 参数: ${ JSON.stringify(error.config?.params) }
|
||
5、请求 头 : ${ JSON.stringify(error.config?.headers) }
|
||
|
||
------------------------------------------------------------
|
||
|
||
6、错误信息为: ${ error.message }
|
||
7、错误代码为: ${ error.stack }
|
||
`);
|
||
return Promise.reject(error)
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 添加请求拦截器
|
||
* @constructor
|
||
*/
|
||
public async RequestInterceptor(): Promise<void> {
|
||
this.instance.interceptors.request.use((config: InternalAxiosRequestConfig) => {
|
||
return config
|
||
}, function (error: AxiosError) {
|
||
return Promise.reject(error)
|
||
})
|
||
}
|
||
|
||
}
|
||
|
||
|
||
export default new AxiosInfra(); |