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)
})
相关推荐
一只叫煤球的猫1 分钟前
我做了一个“慢慢来”的开源任务管理工具:蜗牛待办(React + Supabase + Tauri)
前端·react.js·程序员
LYFlied4 分钟前
AI时代下的规范驱动开发:重塑前端工程实践
前端·人工智能·驱动开发·ai编程
لا معنى له19 分钟前
学习笔记:注意力机制(Attention)、自注意力(Self-Attention)和多头注意力(Multi-Head Attention)
笔记·学习
走在路上的菜鸟20 分钟前
Android学Dart学习笔记第十六节 类-构造方法
android·笔记·学习·flutter
代码游侠32 分钟前
学习笔记——线程控制 - 互斥与同步
linux·运维·笔记·学习·算法
汉得数字平台35 分钟前
汉得H-AI飞码——前端编码助手V1.1.2正式发布:融业务知识,提开发效能
前端·人工智能·智能编码
前端小万35 分钟前
Jenkins 打包崩了?罪魁是 package.json 里的 ^
前端·jenkins
编程小白gogogo36 分钟前
苍穹外卖前端环境搭建
前端
光影少年39 分钟前
web端安全问题有哪些?
前端·安全
爱吃泡芙的小白白40 分钟前
Agent学习——xiaomi MiMo V2 Flash大模型的API申请
学习·agent·xiaomi mimo