美文网首页
request.js

request.js

作者: 嘤夏影 | 来源:发表于2023-06-24 14:16 被阅读0次
import axios ,{AxiosInstance,AxiosRequestConfig,AxiosResponse} from 'axios'

export class Request {
    public static axiosInstance:AxiosInstance;
    public static init() {
        this.axiosInstance = axios.create({
            baseURL:'/api',
            timeOut:6000
        });
        // 初始化拦截器
        this.initInterceptors();
        return axios
    }
    // 初始化拦截器
    public static initInterceptors() {
        // 设置post请求头
        this.axiosInstance.defaults.headers.post['Content-Type'] = 'application/x-ww-form-urlencoded';
        this.axiosInstance.interceptors.request.use(
            (config:AxiosRequestConfig) => {
                // 登录流程控制中,根据本地是否存在token判断用户的登录情况
                const token = localStorage.getItem('ACCESS_TOKEN');
                if(token){
                    config.headers.Authorization = 'Bearer' + token;
                }
                return config
            },
            (error) => {
                console.log(error)
            }
        );
        this.axiosInstance.interceptors.response.use(
            (response:AxiosResponse) => {
                if(response.status === 200){
                    return response;
                }else {
                    Request.errorHandle(response);
                    return response
                }
            },
            (error) => {
                const {response} = error;
                if(response){
                    Request.errorHandle(response);
                    return Promise.reject(response.data);
                }else {
                    console.log("网络连接异常,请稍后再试!")
                }
            }
        )
    };
    public static errorHandle(res){
        switch(res.status){
            case 401:
                break;
            case 403:
                break;
            case 404:
                break;
            default:
                console.log('报错了')
        }
    }
}

// 使用
// export function login (params) {
//     return Request.axiosInstance({
//         url:'/xxxxx',
//         method:'post',
//         data:params
//     })
// }

//注:处理响应数据 (示例代码,实际可直接直接使用await-to-js)

相关文章

网友评论

      本文标题:request.js

      本文链接:https://www.haomeiwen.com/subject/vhjbydtx.html