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

【vue2.7.16系列】手把手教你搭建后台系统__封装工具库(4)

封装 axios 模块

使用axios发起一个请求是比较简单的事情,但是axios没有进行封装复用,项目越来越大,会引起越来越多的代码冗余,让代码变得越来越难维护。
所以我们在这里先对 axios 进行二次封装,使项目中各个组件能够复用请求,让代码变得更容易维护。

封装要点

  • 统一 url 配置
  • 统一 api 请求
  • request (请求) 拦截器,例如:带上token等,设置请求头
  • response (响应) 拦截器,例如:统一错误处理,页面重定向等
  • 根据需要,结合 Vuex 做全局的 loading 动画,或者错误处理
    将 axios 封装成 Vue 插件使用

在 src 目录下,新建一个 utils 文件夹,用来存放 工具库 代码。新建一个 api 文件夹,用来管理接口。

utils目录下,新建request.js文件用来封装axios

// 导入axios库
import axios from 'axios';

// 创建一个新的axios实例
const instance = axios.create({
  // 设置默认的基础URL
  baseURL: 'https://api.example.com',
  timeout: 5000,
});

// 拦截请求
instance.interceptors.request.use(
  // 在发送请求之前做些什么,例如添加token到请求头中
  config => {
    config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
    return config;
  },
  // 对请求错误做些什么
  error => {
    return Promise.reject(error);
  }
);

// 拦截响应
instance.interceptors.response.use(
  // 对响应数据做点什么
  response => {
    return response;
  },
  // 对响应错误做点什么
  error => {
    if (error.response.status === 401) {
      // 例如,如果响应状态码为401,跳转到登录页面
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

// 导出封装后的axios实例
export default instance;

未完…


http://www.kler.cn/news/340738.html

相关文章:

  • 【分立元件】案例:电感焊盘部分发黑原因有什么?
  • 【虚拟化】内核级虚拟化技术KVM介绍,全/半虚拟化的区别,使用libvirt搭建虚拟化平台(go/java/c++)
  • 金融市场的衍生品交易及其风险管理探讨
  • 《Programming from the Ground Up》阅读笔记:p147-p180
  • Kubernetes(K8s)的简介
  • CMake学习笔记:find_package
  • 如何自制无人机?
  • Java 运算符(详细介绍)
  • 操作系统错题解析【软考】
  • 详细介绍numpy在python中的用法
  • 注释,换行,控制台输入输出,命名空间,省略return语句
  • 【算法】链表:24.两两交换链表中的节点
  • llama3 implemented from scratch 笔记
  • HCIA——one
  • 如何使用ssm实现果蔬商品管理系统的设计与实现+vue
  • 通过真实的大学考试题目评估Chat-GPT在Swift语言上的编程能力
  • Ubuntu关闭anaconda自动进入base虚拟环境
  • LeetCode1049:最后一块石头的重量
  • windows中使用类似tree的功能
  • Json-Rpc框架(JsonCpp库使用介绍)