axios的二次封装

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中,特性【摘自官网 】:

  • 支持 Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换 JSON 数据
  • ... ...

二次封装 axios:

① 安装依赖

npm i axios

② 创建实例对象

js 复制代码
const instance = axios.create({
  baseURL: 'https://v3pz.itndedu.com/v3pz',
  timeout: 5000
})

③ 添加请求拦截器:在请求被处理之前拦截,在这里可以统一配置请求头、添加 token、封装 get,post,put,delete 请求、加上接口错误重试机制等等

js 复制代码
instance.interceptors.request.use(config => {
  const token = localStorage.getItem('TOKEN')
  // 不需要token的api
  const whiteUrl = ['/get/code', '/user/authentication', '/login']
  if(token && !whiteUrl.includes(config.url)) {
    // 需要token验证的,在请求头中设置token
    config.headers['x-token'] = token
  }
  return config
}, error => {
  return Promise.reject(error)
})

④ 添加响应拦截器:在这里对 http 错误码进行拦截、简化返回的信息等

js 复制代码
instance.interceptors.response.use(response => {
  if(response.data.code === -1) {
    // console.log(response)
    ElMessage.warning(response.data.msg || response.data.message?.msg || response.data.message)
  } else if(response.data.code === -2) {
    // token 过期
    localStorage.removeItem('TOKEN')
    localStorage.removeItem('USERINFO')
    localStorage.removeItem('menu')
    // 跳转到同源的根目录:http://localhost:5173/
    window.location.href = window.location.origin
    ElMessage.error('token过期,请重新登录')
  }
  // 直接返回data,调用层少一层 .data
  return response.data
}, error => {
  // 超出 2xx 范围的状态码都会触发该函数
  return Promise.reject(error)
})
相关推荐
福兮说4 小时前
前端下载大文件,点了按钮半天没反应:fetch + blob 的三个问题和三种替代写法
前端·javascript·性能优化·文件下载
GreenTea4 小时前
我把 Agent 的 while 循环拆掉了:一种你可能没想到的 Agent 架构
前端·后端·架构
科技观察哨4 小时前
六足平台选型与纳米定位系统集成:HEB-640六自由度位移台在半导体光刻对准中的参数边界与国产替代评估
前端·人工智能
差不多的周周5 小时前
《骨架上下文:基于零镜头骨架的动作识别的骨架侧上下文提示学习》论文核心部分详解
学习
niucloud-admin5 小时前
JAVA V6 多商户商城 开发文档——web前端
前端
颜进强5 小时前
16 · NestJS LifecycleEvents 生命周期事件:五个钩子、三条边界,和 rag-server 的优雅停机
前端·后端·ai编程
Century_Dragon6 小时前
从挂图到VR:汽修专业的一堂新能源原理课可以怎么上~
学习
知识分享小能手6 小时前
C++ 学习教程,从入门到精通,C++对象和类 — 详细知识点总结(10)
开发语言·c++·学习
今年下半年6 小时前
【VUE】整合腾讯地图、自定义区域边界、村委名称及资产统计(放大显示资产点位)
前端·javascript·vue.js
郑州光合科技余经理7 小时前
同城电商系统:库存变更怎么同步到订单
java·开发语言·前端·后端·uni-app·php·ai编程