封装 axios 与 请求拦截

202 阅读1分钟

封装axios 示例

    /**
 * @author looveyy
 * @date 2022-5-8
 * @description Ajax配置文件
 */

import axios from "axios"
import store from '../store'

/**配置打包路由选项 */
const Axios = axios.create({
    baseURL:process.env.NODE_ENV === 'development' ? '/dingxiang' : '服务器地址',
    timeout:5000
})

Axios.interceptors.request.use(function(config){
    const _url = [
        '/user/login',
        '/auto/login'
    ]

    if(_url.includes(config.url)){
        return config
    }

    let token = store.getters['common/token']
    if(!token){
        return Promise.reject({code:5555,message:'请求被拦截,您没有登陆!'})
    }

    config.headers['X-Token'] = token
    return config

})

/**
 * 封装的请求
 * @param {{url:string, method: 'GET' | 'POST' | 'PUT' | 'DELETE',data:any,params:any}}req
 * @returns 
 */
export default  req => {
    return new Promise(resolve=>{
        Axios.request({
            url:req.url,
            method:req.method || 'get',
            data: req.data || {},
            params:req.params || {}
        }).then(({ data })=>{
            resolve(data)
        }).catch(e =>{
            resolve(e)
        })
    })
}