二次封装axios

一、request.js

目录结构  src/api/request.js

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


const NETWORK_ERROR = '网络请求异常,请稍后再试'
//创建一个axios实例对象
const service = axios.create({
    baseURL:config.baseApi
})
//在请求之前做一些事情
service.interceptors.request.use((req)=>{
    //可以自定义header
    //jwt-token认证的时候
    return req
})

//在请求之后做一些事情
service.interceptors.response.use((res)=>{
    //解析
    const { code, data, msg } = res.data
    if(code === 200){
        return data;
    }else{
        //网络请求错误
        ElMessage.error(msg || NETWORK_ERROR)
        //Promise.reject() 方法返回一个带有拒绝原因的 Promise 对象。
        return Promise.reject(msg || NETWORK_ERROR)
    }
})

//封装的核心函数
function request(options){
    // 传入的形式
    // {
    //     method: 'get'
    //     data:{

    //     }
    //     mock:false
    // }
    options.method = options.method || 'get'
    if(options.method.toLowerCase() === 'get'){
        options.params = options.data
    }
    //对mock处理
    let isMock = config.mock;//总开关
    if(typeof options.mock !== 'undefined'){
        isMock = options.mock;
    }
    //对线上环境做处理
    if(config.env === 'prod'){
        //不给你用到mock的机会
        service.defaults.baseURL = config.baseApi
    }else{
        service.defaults.baseURL = isMock ? config.mockApi : config.baseApi
    }
    return service(options)
}

export default request

二、config

目录结构  src/config/index.js

/*
环境配置文件
在企业级项目里面有三个环境
开发环境
测试环境
线上环境
*/

//当前环境,若取不到默认为线上环境
const env = import.meta.env.MODE || 'prod'

const EnvConfig = {
    development:{
        baseApi: '/api',
        mockApi: 'https://www.fastmock.site/mock/b2b8f9ade3b2eee31697084b09743a08',
    },
    test:{
        baseApi: '//test.future.com/api',
        mockApi: 'https://www.fastmock.site/mock/b2b8f9ade3b2eee31697084b09743a08',
    },
    prod:{
        baseApi: '//future.com/api',
        mockApi: 'https://www.fastmock.site/mock/b2b8f9ade3b2eee31697084b09743a08',
    }
}

export default {
    env,
    //mock的总开关,
    mock: true,
    ...EnvConfig[env]
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值