axios的跨越封装

devtools/2024/9/26 1:24:27/
开发环境需要配置代理devServer: {// host: 'localhost', // ip 本地// open: true, // 配置自动启动浏览器port: 3000, // 设置端口号proxy: {'/api': { // 接口以api开头的才用代理target: '服务器ip', //axiso实例里的baseURL的值(后端路径)changeOrigin: true,pathRewrite: {//这里理解成用‘/api’代替target里面的地址,组件中我们调接口时直接用/api代替// 比如我要调用'http://xxx.xxx.x.xxx:8080/login',直接写‘/api/user/add’即可 代理后地址栏显示/  '^/api': '',}}},},

axios封装引入

main.js


import axios from "axios";
axios.defaults.withCredentials = true;

在src文件下,创建api/_BaseAxios.js文件

import axios from "axios"; // 引入axios
import AxiosInterceptors from './_AxiosInterceptors' // 引入拦截器规则import {RBAC_BASE_URL, // api路径TIMEOUT        // 超时时长
} from '../const.js' let requestConfig = {baseURL: RBAC_BASE_URL, // 配置api路径timeout: TIMEOUT        // 配置超时时长
}const baseAxios = axios.create(requestConfig); // 创建axios实例
AxiosInterceptors.setInterceptors(baseAxios);  // 使用拦截器规则export default baseAxios;

在src文件下,创建api/_AxiosInterceptors.js文件. 在_BaseAxios中引入

store不需要可以注释掉

import store from "@/store/index";function setInterceptors(axios) {// 在被then()和catch()方法处理之前,把 客户端请求 拦截下来优先处理// api 返回的数据均为json,如果请求没有指明,则默认视为jsonaxios.interceptors.request.use(config => {// 在发送请求之前做些什么if (store.state.token) {// 添加请求头config.headers['token'] = store.state.tokenconfig.headers['Authorization'] = store.state.token}return config;}, error => {// 对请求错误做些什么return Promise.reject(error);});// 在被then()和catch()方法处理之前,把 服务器返回结果 拦截下来优先处理axios.interceptors.response.use(response => {/*** 响应成功拦截器 */// console.log("response", response)return response;}, error => {return Promise.reject(error);});return axios;
}export default {setInterceptors
}

新建config.js 在_BaseAxios中引入

// export const PROJECT_NAME = 'Panda';
// export const TOKEY_ATTR_NAME = 'X-Access-Token'; // TOKEN的属性名(即客户端传token到服务端,token的属性名)
// export const IS_LOGIN_NEEDED = true; // 系统是否需要登录后使用let rbacBaseUrl; // 基础API地址
switch (process.env.NODE_ENV) {case "production": // 发布到服务器 npm run buildrbacBaseUrl = '服务器ip/';break;case "development": // 本机前端开发调试 npm run servedefault:rbacBaseUrl = '/api';break;
}
export const RBAC_BASE_URL = rbacBaseUrl;export const TIMEOUT = 10000; // 一般请求超时时间
// export const UPLOAD_TIMEOUT = 0; // 指定文件上传请求超时的毫秒数(0 表示无超时时间)// //文件地址
// export const uploadImgUrl = '服务器ip/';

接口调用

import BaseAxios from "../_BaseAxios";
import ResHelper from "../_ResponseHelper.js";/*** @description 登录                   post,data* @param {String} account 账号* @param {String} password 密码*/
function login(params) {return BaseAxios({url: `system/Login/login`,method: "post",data: {"account": params.account,"password": params.password,}// data: params,})// .then(ResHelper.handler);
}/*** @description 注册                   post,params* @param {Integer} account 账号* @param {String} password 密码* @param {String} code 验证码* @param {String} mailbox 邮箱* @param {String} username 名字* @param {Integer} phoneNumber 电话号码*/
function register(params) {return BaseAxios({url: `system/Login/register`,method: "post",params: params})
}/*** @description 获取用户信息               get* @param {String} Authorization 验证信息*/
function getUser() {return BaseAxios({url: `system/Login/user`,method: "get",})
}/*** @description 获取申请列表            get,params* @param {Integer} pageSize 页数* @param {String} keyword 姓名*/
function getApplyList(params) {return BaseAxios({url: `system/Personal/list`,method: "get",params: params,})
}export default {login,register,getUser,getApplyList,
}


http://www.ppmy.cn/devtools/6064.html

相关文章

【C++提高】常用容器

常用容器 引言:迭代器的使用一、vector容器1. vector基本概念2. vector的迭代器3. vector构造函数4. vector赋值操作5. vector容量和大小6. vector插入和删除7. vector数据存取8. vector互换容器9. vector预留空间 二、deque容器1. deque容器的基本概念2. deque容器…

idea错误地commit后如何处理

如果你想使用命令行重新初始化 Git 仓库,可以按照以下步骤进行: 删除该项目的.git文件夹 打开命令行终端。 切换到项目所在的目录,使用 cd 命令。 在项目目录下运行以下命令来重新初始化 Git 仓库 git init这将在当前目录下创建一个新的 Git …

基于双向长短期神经网络BILSTM的收盘预测,基于gru神经网络的收盘预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 基于双向长短期神经网络BILSTM的收盘预测,基于gru神经网络的收盘预测 完整代码:基于双向长短期神经网络BILSTM的收盘预测,基于gru神经网络的收盘预测(代码完整,数据齐全)资源-CSDN文库 https://download.cs…

保姆级教程 | Adobe Illustrator 中插入数学符号

背景 鉴于Adobe Illustrator作为比较专业的绘图/组图软件,我的论文数据作图都会选择先在origin中把原始数据绘制好,后都放入AI中细修。由于在作图过程中需要插入数学符号,但仿佛没有PowerPoint用起来那么熟悉,遂记录下。 步骤 …

Ai语音机器人系统语音识别达到了什么水准

AI语音机器人系统语音识别技术概述 AI语音机器人系统的语音识别技术主要依赖于深度学习算法,通过对大量语音数据进行训练,使得模型能够从语音信号中提取有效特征,从而实现高精度的语音识别。这一过程通常包括以下几个关键步骤: …

【小程序】IOS wx小程序解压获取源文件

根据自己手机的系统,获取wx小程序的缓存目录 一、微信小程序文件存放路径 安卓: /data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/iOS越狱: /User/Containers/Data/Application/{{系统UUID}}/Library/WechatPrivate/{{user…

llama_factory微调QWen1.5

GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100 LLMsUnify Efficient Fine-Tuning of 100 LLMs. Contribute to hiyouga/LLaMA-Factory development by creating an account on GitHub.https://github.com/hiyouga/LLaMA-FactoryQwen1.5 介绍 | QwenGITH…

分布式光纤测温解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、方案介绍 分布式光纤测温(DTS)集光电信号检测、计算机技术等为一体,具有实时监测、测温精度高、测量距离长、可精确定位、采用光纤作为传感器和传输介质,具有抗电磁干扰、本征防…