vue拦截器及请求封装

article/2025/3/16 5:15:44

1.vue项目的src文件夹中创建request文件夹
(1)request文件夹中创建index.js (拦截器主要代码)

/*** 请求封装*/import axios from 'axios';import configUrl from './url.js';
//  import store from '../store';import cookies from "vue-cookies";import router from "../router/index"const service = axios.create({baseURL: configUrl.baseURL,// withCredentials: true, // 当跨域请求时发送cookietimeout: 50000 // 请求超时});//添加请求拦截器   请求接口统一添加tokenservice.interceptors.request.use(config =>{config.headers['PC-LOGIN-SESSION-ID'] = cookies.get('supplier_token')||''//  config.headers.PC-LOGIN-SESSION-ID = cookies.get('gys_token');  //请求添加tokenreturn config;},error =>{return Promise.reject(error);})// 响应拦截器service.interceptors.response.use(response => {//如果接口返回token,替换本地旧tokenif (response.headers.token) {sessionStorage.setItem("token", response.headers.token);}console.log('拦截器响应',response)//自定义设置后台返回code对应的响应方式if (response.data.code == 0) { // 请求成功return response.data;} else if(response.data.code == 100){ //token过期router.app.$router.push({ path: '/login' })return response.data;// router.app.$router.replace('/login')//  return Promise.reject(new Error('登录超时'));// console.log(router)}else{return response.data;}// return response.data;},error => {if (error.message) {// this.$massage.error('服务器开小差了,请稍后再试!')   //错误响应alert('服务器开小差了,请稍后再试!')   }return Promise.reject(error);});//暴露出封装过的服务export default service;

(2)request文件夹下创建url.js文件 (域名地址的配置,按照不同环境请求域名不同)

const VUE_APP_MODE = process.env.VUE_APP_MODE;
let baseURL;
if (VUE_APP_MODE == 'development') { // 本地baseURL = 'http://127.0.0.1:8888';//测试地址
} else {// pre 预生产// prod 生产switch (VUE_APP_MODE) {case 'test':// 测试baseURL = 'http://test.com/api';break;case 'pre':// 预生产baseURL = 'http://pre.com';break;case 'prod':// 生产baseURL = 'http://prod.com';break;default:// 测试baseURL = 'http://develop.api.center.tuanhaocai.com';// baseURL = 'http://192.168.2.207:8088';//本地break;}
}
module.exports = {baseURL
};

(3)request文件夹下创建api.js文件

//引入上边封装的axios文件
import request from "@/request";
import qs from "qs";  // 用户获取验证码
export const getCode = data => {return request({url: "/common/sms/send?"+qs.stringify(data),method: "GET",headers:{"content-type": "application/json;charset=UTF-8"},});
};
// 用户退出登录
export const loginOut = data => {return request({url: "/supplier/user/logout?"+qs.stringify(data),method: "GET",headers:{"content-type": "application/json;charset=UTF-8"},});
};
//用户修改密码  post请求
export const update_password = data => {return request({url: "/supplier/user/updatePassword",method: "POST",headers:{"content-type": "application/json;charset=UTF-8"},data});
};//用户登录(密码登录)  post请求
export const login_rq = data => {return request({url: "/supplier/user/loginForPas",method: "POST",headers:{"content-type": "application/json;charset=UTF-8"},data});
};
//用户登录(验证码登录)  post请求
export const login_code = data => {return request({url: "/supplier/user/loginForCode",method: "POST",headers:{"content-type": "application/json;charset=UTF-8"},data});
};//下载用户上传模板   get请求
export const downLoadTemplate = params=> {return request({url: "/user/info/template",method: "GET",headers:{"content-type": "application/json;charset=UTF-8"},params});
};

(4)补充说明启动环境问题(request文件夹下创建url.js文件如何配置启动环境不同域名不同问题)
在配置文件package.json中配置启动命令(可以自己随意起名)

  "scripts": {"serve": "vue-cli-service serve --open","dev": "vue-cli-service serve --open --mode dev","test": "vue-cli-service build --mode test","build": "vue-cli-service build --mode production","lint": "vue-cli-service lint"},

示例图:
在这里插入图片描述
以上配置完以后需要在项目根目录增加自定义启动文件配置 (如配置文件中有"test": “vue-cli-service build --mode test”,则要增加.env.test)
如图示例:
在这里插入图片描述
.env.test文件中代码如下:

NODE_ENV='test'
VUE_APP_MODE='test'

<-------引用------->

import { loginOut, update_password } from "@/request/api";

在这里插入图片描述示例图


http://chatgpt.dhexx.cn/article/vgxo6EM8.shtml

相关文章

Vue 拦截器原理和详细使用

拦截器原理和作用 首先拦截器在src/utils/request.js 文件中&#xff0c;拦截器分为请求拦截器和响应拦截器。 页面中的每一个请求都会经过请求拦截和响应拦截&#xff0c;所以一般在这个文件进行操作。 这一文件一般引入axios&#xff0c;vuex&#xff0c;Message&#xff0…

MATLAB学习笔记:定积分与广义积分

计算定积分和广义积分的命令int调用格式&#xff1a; 一元函数定积分&#xff1a; int(f(x),a,b) 二元函数定积分&#xff1a; int(f(x,y),x,a,b) >> syms x; >> fsin(x); >> sint(f,0,pi) s 2 >> syms x; >> fabs(x-1); >> sint(f,0,2)…

3.利用matlab计算不定积分和定积分(matlab程序 )

1.简述 不定积分 首先&#xff0c;通过符号变量创建一个符号函数&#xff0c;然后调用积分命令来计算函数的积分&#xff0c;示例如下&#xff1a; 注意&#xff1a;matlab中计算的不定积分结果中没有写上常数C&#xff0c;读者需要自己在使用的时候记得加上常数部分。 通常情…

matlab 自带定积分,Matlab怎么计算定积分,划重点了

在生活或研究中可能会遇到需要积分运算的情况&#xff0c;比如计算一个不规则图形的面积等等。matlab有很强的数据处理能力&#xff0c;只要给出任意可积的函数和积分上下线&#xff0c;用它可以进行积分运算。具体操作如下&#xff1a; 工具/材料 matlab软件 操作方法 01 以f(…

MATLAB基础教程(7)——求解定积分和不定积分

目录 定积分的基本概念 什么是定积分&#xff1f; 如何深入的理解定积分&#xff1f; 如何计算定积分? 在matlab中计算定积分。 不定积分 在matlab中计算不定积分 在matlab中计算定积分 本期回顾 定积分的基本概念 什么是定积分&#xff1f; 简而言之&#xff0c;我…

[转载]Matlab定积分近似计算

目标&#xff1a;加深理解积分理论中分割、近似、求和、取极限的思想方法&#xff0c;了解定积分近似计算的矩形法、梯形法与抛物线法&#xff0c;会用MATLAB语言编写求定积分近似值的程序&#xff0c;会用MALAB中的命令求定积分。 预备知识 在许多实际问题中&#xff0c;常常…

matlab近似计算求积分,matlab定积分的近似计算.ppt

matlab定积分的近似计算.ppt MATLAB数学建模与仿真 定积分的近似计算 2 定积分计算的基本公式是牛顿 莱布尼兹公式 但当被积函数的原函数不知道时 如何计算 这时就需要利用近似计算 特别是在许多实际应用中 被积函数甚至没有解析表达式 而是一条实验记录曲线 或一组离散的采样…

【Matlab】求解积分问题

求解积分问题 不定积分inf函数调用实例1实例2 定积分与无穷积分实例1实例2 多重积分 不定积分 inf函数调用 Finf(fun,x)fun是被积函数&#xff0c;是自变量&#xff0c; 当然如果只有一个自变量可以省略。 实例1 f ( x 2 1 ) 2 f {\left( {{x^2} 1} \right)^2} f(x21)2 …

matlab定积分怎么输入,Matlab计算定积分的操作内容讲解

许多伙伴还不晓得Matlab计算定积分的操作&#xff0c;而下面笔者就分享了Matlab计算定积分的操作内容&#xff0c;希望有需要的朋友都来共同学习哦。 打开Matlab&#xff0c;找到Matlab的命令窗口&#xff0c;点击进入&#xff0c;如图&#xff0c;当然也可以编辑脚本然后通过运…

关于用MATLAB求解定积分方程的问题

关于用MATLAB求解定积分方程的问题 Matlab论坛的总结帖&#xff1a; MATLAB中文论坛常见问题归纳-技术专栏-MATLAB中文论坛 帖子里面也有包含对于matlab中常用积分求解的介绍。 关于用matlab求解积分方程的问题&#xff0c;现在比较流行的是符号求解的方法。 对于积分方程的…

MATLAB新手简明使用教程(六)——使用matlab求解定积分和不定积分的问题——新手来看,保证看懂。

前期回顾 上期的教程虽然简短&#xff0c;但还是有点东西的&#xff0c;上一节中&#xff0c;我们学习了下面的知识点。 在matlab中定义矩阵&#xff1a;A [1 2 3; 2 3 4; 3 4 5]&#xff0c;每行元素空格隔开&#xff0c;两行之间使用分号隔开。线性代数矩阵乘法运算、求解…

给div赋html,jquery怎么给div赋值

jquery给div赋值的方法&#xff1a;首先创建addtext函数&#xff1b;然后在函数内通过id(mydiv)获取div对象&#xff1b;最后使用text方法给div赋值即可&#xff0c;如【function addtext(){$(#mydiv).text(xx)}】。 环境&#xff1a; 本文适用于所有品牌的电脑。 (学习视频分享…

jQuery数据赋值解析

作者:Jiang, Jinlin 在我们使用jQuery中,会用到$(element).data()方法存取赋值到元素上的数据。通过该方法,我们每次通过selector获取该元素时,总能获取其赋值的数据。今天,我们就来看看jQuery是如何实现的。 首先,我们先从data方法看起: data方法接受两种参数形式,第…

给div赋值 html,jquery给div赋值的示例

jquery给div赋值的示例 发布时间&#xff1a;2020-11-30 11:44:03 来源&#xff1a;亿速云 阅读&#xff1a;120 作者&#xff1a;小新 小编给大家分享一下jquery给div赋值的示例&#xff0c;希望大家阅读完这篇文章后大所收获&#xff0c;下面让我们一起去探讨吧&#xff01;j…

jQuery取值和赋值的基本方法

一、.html() 获取集合中第一个匹配元素的HTML内容,也可以往匹配到的元素中写入内容。 如果写入的内容为标签&#xff0c;会被解析到页面中。 二、.text() 得到匹配元素集合中每个元素的合并文本&#xff0c;包括他们的后代 写入的标签不会被页面解析 三、.size() 返回的jQu…

Lora协议整理(第2汇报)

帧结构&#xff1a; 详细帧结构&#xff1a; 抓到的数据&#xff1a; LoraServer的搭建&#xff1a; 关于开源的lorawan server目前比较火的是brocaar的go语言版本的 https://github.com/brocaar/loraserver 另一个是gotthardp 的erlang语言的 https://github.com/gotth…

LoRaWAN与LoRa的区别!

LoRaWAN与LoRa的区别 在物联网技术快速发展的今天&#xff0c;NB-IoT、LoRa、SigFox等技术名词经常进入我们的视野中&#xff0c;对于刚刚接触物联网领域的人来说&#xff0c;在一大堆名词面前可能会混淆。面对类似于LoRa和LoRaWAN这样容易混淆的名词&#xff0c;其实只要系统…

Lora通信应用开发

概述&#xff1a; 1.了解Lora技术的基本知识 2.了解通信协议用途 3.掌握Lora模块SPI配置方法 4.掌握简单的Lora模块数据对传方法 5.掌握Lora通讯协议使用方法 一、什么是LoRa LoRa&#xff08;Long Range Radio&#xff0c;远距离无线电&#xff09;是一种基于扩频技术的…

常用的LoRa网络结构

LoRa应用中组网方式非常多&#xff0c;且很多供应商根据需求制定了相应的协议(网络层和应用层)&#xff0c;根据是否支持LoRaWAN协议可以分为LoRaWAN协议网络和私有协议网络两大类。在中国的LoRa生态中有大量的用户使用私有协议&#xff0c;而在欧美等发达国家的LoRa市场上绝大…

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

关于本教程&#xff1a; ESP32 基础篇 1.ESP32简介 2.ESP32 Arduino 集成开发环境 3.VS 代码和 PlatformIO 4.ESP32 引脚 5.ESP32 输入输出 6.ESP32 脉宽调制 7.ESP32 模拟输…