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

vue使用axios实现拦截器

文章目录

  • 一、使用Pinia存储token
  • 二、安装axios拦截器
  • 三、编写工具实现请求拦截和响应拦截
  • 四、API 接口中使用拦截器


一、使用Pinia存储token

参考文章:vue使用Pinia实现不同页面共享token

二、安装axios拦截器

npm install axios

三、编写工具实现请求拦截和响应拦截

utils/request.js

//定制请求的实例//导入axios  npm install axios
import axios from 'axios';
import { ElMessage } from 'element-plus';
//定义一个变量,记录公共的前缀  ,  baseURL
const baseURL = '/api';
const instance = axios.create({baseURL})//导入token状态
import { useTokenStore } from '@/stores/token.js';
//添加请求拦截器
instance.interceptors.request.use((config)=>{//在发送请求之前做什么let tokenStore = useTokenStore()//如果token中有值,再携带if(tokenStore.token){config.headers.Authorization=tokenStore.token}return config},(err)=>{//如果请求错误做什么return Promise.reject(err);//异步的状态转化成失败的状态}
)import router from '@/router'//添加响应拦截器
instance.interceptors.response.use(result=>{//判断业务状态码if(result.data.code==0){return result.data;}ElMessage.error(result.data.msg ? result.data.msg : '服务异常');//异步操作转成失败的状态return Promise.reject(result.data);},err=>{//如果响应状态码时401,代表未登录,给出对应的提示,并跳转到登录页if(err.response.status===401){ElMessage.error('请先登录!')router.push('/login')}else{ElMessage.error('服务异常');}return Promise.reject(err);//异步的状态转化成失败的状态}
)export default instance;

四、API 接口中使用拦截器

src/api/article.js

//导入请求工具类
import request from '@/utils/request.js'
//导入@/stores/token.js
import { useTokenStore } from '@/stores/token'//文章分类列表查询
export const articleCategoryListService = () => {return request.get('/category')
}
http://www.xdnf.cn/news/506485.html

相关文章:

  • 体育比分数据服务避坑指南
  • 信息与信息化
  • 【高斯函数拟合】高斯-牛顿法与梯度下降法的 Python 实现
  • Python集合运算:从基础到进阶全解析
  • 无线信道的噪声与干扰
  • 长三角、珠三角、成渝、京津冀四大城市群的区域与分布
  • 生产者 - 消费者模式实现方法整理
  • Ubuntu 添加系统调用
  • 给你的matplotlib images添加scale Bar
  • Python 3.11详细安装步骤(包含安装包)Python 3.11详细图文安装教程
  • 学习深度学习是否要先学习机器学习?
  • C语言| 指针变量的定义
  • 现货黄金跌破 3160 美元,市场行情剧烈波动​
  • 数据库故障排查指南:从紧急响应到根因分析【DeepSeek创作】
  • AUTOSAR图解==>AUTOSAR_SRS_WatchdogDriver
  • 基于单片机的防盗报警器设计与实现
  • 专题四:综合练习(括号组合算法深度解析)
  • 一分钟用 MCP 上线一个 贪吃蛇 小游戏(CodeBuddy版)
  • ARM-Linux 完全入门
  • Word文档图片排版与批量处理工具推荐
  • 在 Linux 上安装 MATLAB:完整指南与疑难解决方案
  • Autosar Nvm下电存储实现方式-基于ETAS工具
  • 小demo:选中树结构最后层级拿到所有层级中的deviceName并按照要求拼接
  • 嵌入式培训之数据结构学习(五)栈与队列
  • C语言:gcc 如何调用 Win32 打开文件对话框 ?
  • 543.二叉树的直径
  • CT重建笔记(五)—2D平行束投影公式
  • 5.15 学习日志
  • Java 面向对象详解和JVM底层内存分析
  • 图表制作-基础雷达图