当前位置: 首页 > news >正文

前端封装axios请求

         基于vue-element-admin的请求封装,进行部分修改和记录。如果使用vue脚手架搭建的项目可以先安装axios包

npm install axios@0.18.1 -S 

  request.js

import axios from "axios";
import { MessageBox, Notification } from "element-ui";
import store from "@/store";
import { getToken } from "@/utils/auth";// 创建axios
const service = axios.create({baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url 根据运行环境读取对应配置文件的apitimeout: 5000, // 请求时长,超时则视为请求失败
});// 请求拦截器 可以在请求发送前做一些处理
service.interceptors.request.use((config) => {if (store.getters.token) {//token保存的请求头,后端读取做JWT做身份校验config.headers["Authorization"] = getToken();}return config;},(error) => {// 请求发送错误console.log(error);return Promise.reject(error);}
);// 返回体拦截器
service.interceptors.response.use((response) => {const res = response.data;const status = response.status;// 返回体一般可分为正常的请求返回体和blob类型的二进制数据流,如图片,文件等。// 这里判断如果是blob类型则直接返回if (status == 200 && response.data instanceof Blob) {return response;}if (res.code !== 200) {Notification.error({title: "错误",message: res.message || "服务器维护中...",duration: 5 * 1000,});return Promise.reject(new Error(res.message || "Error"));} else {return res;}},(error) => {console.log("err:" + error); // for debugconsole.log(error);let { message } = error;if (message == "Network Error") {message = "服务器维护中...";} else if (message.includes("timeout")) {message = "系统接口请求超时";} else if (message.includes("Request failed with status code")) {message = "系统接口" + message.substr(message.length - 3) + "异常";}Notification.error({title: "错误",message: message,duration: 5 * 1000,});const err = error.response.status;// 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;if (err === 508 || err === 512 || err === 514) {// to re-loginMessageBox.confirm("用户token失效,跳转至登录页面。", "确定登出", {confirmButtonText: "重新登录",type: "warning",}).then(() => {store.dispatch("user/resetToken").then(() => {location.reload(); // 为了重新实例化vue-router对象 避免bug});});}return Promise.reject(error);}
);export default service;

使用:
 

import request from "@/utils/request";export function updateUnit(data) {return request({url: "/unit",method: "put",data,});
}


http://www.mrgr.cn/news/14259.html

相关文章:

  • leetcode 3124.判断矩阵是否满足条件
  • Springboot @RestControllerAdvice全局异常捕获处理
  • 软件理论,图
  • 【生活英语】4、音乐
  • docker内安装miniconda
  • SSM框架之Mybatis
  • 实现A-Z滑动检索菜单
  • 打脸预测,AI泡沫破裂,科技衰退
  • RFID 智慧城市书房:开启智慧阅读新时代
  • 内存管理1
  • 淘宝扭蛋机小程序,市场发展下的潜在机遇
  • 智能合约漏洞(五)
  • selenium启动总报错 WebDriverManager总是异常
  • Linux驱动学习之IIC(驱动BH1750)
  • 【图像增强】使用 Albumentations Python 库(02)
  • 【系统架构师软考】计算机体系结构(二)
  • write your own xx-starter【1】
  • JVM对象创建和内存分配机制深度解析
  • 鸿蒙(API 12 Beta3版)【获取音视频元数据】音频播放与录制
  • nginx部署前端vue项目完整详细讲解