axios的二次封装

1.

import axios from "axios"
import config from "./../config"
import { ElMessage } from "element-plus"
import router from "../router"

const TOKEN_INVALID = "token已失效,请重新登录"
const NETWORK_ERROR = "网络异常,请稍后重试"

//创建axios实例
const service = axios.create({
    baseURL: config.baseApi,
    timeout: 8000
})

//请求拦截
service.interceptors.request.use(req => {
    const headers = req.headers
    if (!headers.Authorization) headers.Authorization = "Bear Bzw"
    return req
})

//请求拦截
service.interceptors.request.use(req => {
    //在请求头添加token
    const headers = req.headers
    if (!headers.Authorization) headers.Authorization = "Bear Bzw"
    return req
})

//响应拦截
service.interceptors.response.use(res => {
    const { data, code, msg } = res.data
    //成功返回data
    if (code === 200) {
        return data
        //登录失效返回首页并且提示
    } else if (code === 40001) {
        ElMessage.error(TOKEN_INVALID)
        setTimeout(() => {
            router.push("/login")
        }, 15000)
        return Promise.reject(TOKEN_INVALID)
    } else {
        //报错则提示
        ElMessage.error(msg || NETWORK_ERROR)
        return Promise.reject(msg || NETWORK_ERROR)
    }
})

function request(options) {
    options.method = options.method || "get"
    if (options.method.toLowerCase() === "get") {
        options.params = options.data
    }
    if (config.env === "prod") {
        service.defaults.baseURL = config.baseApi
    } else {
        service.defaults.baseURL = config.mock ? config.mockApi : config.baseApi
    }
    return service(options)
}

//创建请求方式,直接进行调用
["get", "post", "delete", "put", "patch"].forEach(item => {

    request[item] = (url, data, options) => {
        return request({
            url, data, method: item, ...options
        })
    }
})
export default request
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值