Vue实现数据请求拦截

作者:TiAmo_907 时间:2024-05-05 09:24:11 

本文实例为大家分享了vue数据请求拦截的具体代码,供大家参考,具体内容如下

在src文件夹下创建utils文件夹

Vue实现数据请求拦截

同时在文件夹下创建request.js和auth.js文件

request.js为请求拦截、请求数据封装主入口
auth.js为设置token和删除token及判断用户是否登录封装主入口 

auth.js (封装token)


export function isLogin() {
 if (localStorage.getItem('token')) {
  return true;
 } else {
  return false;
 }
}
export function getToken() {
 return localStorage.getItem('token');
}
export function setToken(token) {
 localStorage.setItem('token', token);
}

export function removeToken() {
 localStorage.removeItem('token');
}

下载axios(命令: npm install axios --save-dev)、同时引入axios、getToken


import axios from 'axios';
import { getToken } from './auth';

创建实例:传两个参数(timeout(超时时间)、baseUrl(服务器路径))


const instance = axios.create({
  timeout: 5000,
  baseURL: 'https://xxxxxxxxx/xxxx/',
});

请求拦截


// 请求拦截
instance.interceptors.request.use(
 function(config) {
  // eslint-disable-next-line prettier/prettier
  config.headers.authorization = 'Bearer ' + getToken();
  return config;
 },
 function(error) {
  // Do something with request error
  return Promise.reject(error);
 }
);

instance.interceptors.response.use(
 response => {
  return response;
 },
 error => {
  if (error.response.status == 401) {
   window.location.href = '/#/login';
  }
  if (error.response.status == 404) {
   window.location.href = '/404.html';
  }
  return Promise.reject(error.response.data);
 }
);

请求封装


/**
 * 获取数据 get请求
 * @param {*} url
 * @param {*} config
 */
export const get = (url, config) => instance.get(url, config);

/**
 * post请求
 * @param {*} url
 * @param {*} data
 * @param {*} config
 */
export const post = (url, data) => instance.post(url, data);
/**
 * put
 * @param {*} url
 * @param {*} data
 * @param {*} config
 */
export const put = (url, data, config) => instance.put(url, data, config);

/**
 * delete
 * @param {*} url
 * @param {*} config
 */
export const remove = (url, config) => instance.delete(url, config);

来源:https://blog.csdn.net/TiAmo_907/article/details/102635463

标签:vue,数据请求,拦截
0
投稿

猜你喜欢

  • pandas多级分组实现排序的方法

    2022-05-06 14:16:11
  • 在网页设计中,如何使用图标来支持内容?[译]

    2009-03-16 16:35:00
  • matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)

    2021-06-09 02:33:06
  • python中正则表达式 re.findall 用法

    2023-10-03 21:59:18
  • 解决win10 vscode 无法激活python 虚拟环境的问题

    2023-10-09 04:23:25
  • IE下float产生双倍margin

    2007-12-26 12:29:00
  • MySQL 自动备份与数据库被破坏后的恢复方法

    2010-03-25 10:29:00
  • Python读取实时数据流示例

    2023-09-11 14:20:00
  • Python自定义一个类实现字典dict功能的方法

    2023-07-20 22:45:59
  • Golang排列组合算法问题之全排列实现方法

    2023-07-14 14:16:19
  • python解析库Beautiful Soup安装的详细步骤

    2023-06-23 04:29:21
  • asp如何将统计的访问者数目周期性地保存?

    2009-11-26 20:54:00
  • python实现telnet客户端的方法

    2021-04-14 21:07:24
  • python 3利用Dlib 19.7实现摄像头人脸检测特征点标定

    2022-07-31 05:54:21
  • asp如何在聊天室实现趣味答题并计分功能?

    2010-06-18 20:00:00
  • vue.js删除动态绑定的radio的指定项

    2024-05-09 09:51:48
  • SQL Server 2005 模板参数使用说明

    2024-01-19 02:00:46
  • sqlserver 存储过程中的top+变量使用分析(downmoon)

    2024-01-13 13:03:41
  • 在vue中使用防抖和节流,防止重复点击或重复上拉加载实例

    2024-05-22 10:28:01
  • 详解Go语言中关于包导入必学的 8 个知识点

    2023-07-09 05:38:11
  • asp之家 网络编程 m.aspxhome.com