axios配置封装

news/2024/7/3 20:22:03

axios.js

// 这里的@符号等于src目录
import axios from 'axios';
import store from '@/store';
import router from '@/router';
import { Message } from 'view-design';
const { NODE_ENV: env } = process.env;

// 创建axios实例
const axiosInstance = axios.create({
    // baseURL: env === "development" ? "" : serverUrl
    baseURL:'http://********'
});

// request 拦截器
axiosInstance.interceptors.request.use(
    (config) => {
        if (store.state.token) {
            config.headers['Authorization'] = `wruser ${store.state.token}`
        }
        return config;
    },
    (error)=>{
        return Promise.reject(error);
    }
);

// response拦截器
axiosInstance.interceptors.response.use(
    (response)=>{
        return response.data;
    },
    (error)=>{
        switch(error.request.status){
            case 400:
                Message.error(error.request.response);
                break;
            case 401:
                // 授权过期,暂时先跳转到注册页
                if(router.currentRoute.name!=='login'){
                    router.replace()
                }
        }
        if(error.message==="Network Error"){
            Message.error("网络请求错误!");
        }
        return Promise.resolve({code:"error",message:error.message});
    }
);
export default axiosInstance;

function.js

import axios from "@/api/base/axios";

// 存放api
export const url = {
    login: '/api/wrmes/login',
    code: '/api/wrmes/get_capta'
};
// 循环将所有url封装为一个axios对象
export const post = () => {
    let func = {};
    for (let key in url) {
    	// 这里对每一个url进行了封装
    	// 只需要引用import {post} from "src/api/base/function";
    	// 再通过post().login({username:'123456',password:'123456'})访问该api        
    	func[key] = (params = {}) => {
            return axios.post(
                url[key],
                params
            )
        }
    }
    return func;
};
// post最终返回一个key,value对象

http://www.niftyadmin.cn/n/4611457.html

相关文章

前端工程师和设计师必读文章推荐【系列三十五】

《Web 前端开发精华文章推荐》自2011年6月20号发布第一期以来,历经五年半,总共发布了30多期。今天这篇是2017年第1期(总第35期),希望你能在这里发现有用的资料。 梦想天空专注前端开发技术,分享提升网站用户…

hbuildx快捷键设置(IDEA为基准)

![在这里插入图片描述](https://img-blog.csdnimg.cn/c54faf8a561846c98b8a678f9211c79f.png#pic_center)### 在下面新建一行 {"key":"shiftenter","command":"editor.action.insertLineAfter"}, ### 改了上面的,这个也得改…

【chap4-链表】用Python3刷《代码随想录》

通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域data,另一个是指针域next(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针) 链接的入口点称为…

Linux 文件搜索

为什么80%的码农都做不了架构师?>>> 文本搜索:grep (文本中找内容) Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有…

JavaScript如何减少if(装x牛逼)

正常的写法是这样的 if (newValue 2) {this.is_abnormal true;} else {if (this.form.motor ! 2 && this.form.die ! 2 && this.form.position ! 2) {this.is_abnormal false;}}使用return和&&符号之后 if (newValue 2) {this.is_abnormal true;r…

[转]java提高篇(十一)-----强制类型转换

在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换。 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比…

NodeJS-express框架搭建

首先新建一个文件夹C:\test在该文件夹打开cmd安装express模块,npm install express 再运行npm init初始化项目这时候的目录是test{node_modules,package-lock.json,package.json} 在test目录下创建文件app.js 在test目录下创建文件夹route 在route文件夹下创建文件u…

express静态资源配置

目录如下 创建views.js const router require(express).Router(); const fs require(fs); const { resolve } require(path); router.get(/index.html, (req, res) > {// 这里设置utt-8否则返回的buffer数据格式,会自动下载fs.readFile(resolve(./)/views/in…