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)
})
相关推荐
刘卓航众创芯云服务部30 分钟前
Kimi K3复杂任务实测:我把团队最头疼的三个场景全跑了一遍
前端
cll_86924189140 分钟前
一个好看的Wordpress博客文字css样式
前端·css·ui
武子康43 分钟前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端
糖果店的幽灵1 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
meilindehuzi_a1 小时前
Workflow 与 Agent 有什么区别:从 LangChain 流水线到智能体决策
前端·人工智能
三翼鸟数字化技术团队1 小时前
一种前端大屏适配方案
前端·css
小四的小六1 小时前
WebView 在 AI 时代的三个被低估的价值——从自己的 AI 产品里找到的答案
前端·openai·ai编程
程序员黑豆1 小时前
鸿蒙应用开发:ForEach 循环渲染用法详解
前端·harmonyos
JarvanMo1 小时前
HTTP 迎来 16 年来首个全新请求方法:`QUERY`
前端
sulikey2 小时前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习