axios的跨越封装

server/2024/11/14 21:09:04/
开发环境需要配置代理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/server/6586.html

相关文章

RHCE ssh练习之远程连接服务实战

项目要求 一.配置两台主机 主机1. 主机名: server.example.com ip: 172.25.254.100 建立用户timinglee,其密码为timinglee 主机2 主机名:client.example.com ip: 172.25.254.200 二.安需求完成项目 172.25.254.200 在远程登录172.25.254.100的root用户时…

《机器学习by周志华》学习笔记-线性模型-02

1、对数几率回归 1.1、背景 上一节我们考虑了线性模型的回归学习,但是想要做分类任务就需要用到上文中的广义线性模型。 当联系函数连续且充分光滑,考虑单调可微函数,令: 1.2、概念 找一个单调可谓函数,将分类任务的真实标记与线性回归模型的预测值联系起来,也叫做「…

可视化大屏的应用(13):在能源环保领域的五大用武之地

可视化大屏在能源环保领域具有重要的应用价值。以下是一些主要的应用价值: 数据监控与分析 可视化大屏可以实时展示能源使用情况、环境污染指标、能源产量和消耗等数据。通过直观的数据可视化,能够帮助能源管理人员和环保专家更好地监控和分析数据&…

从三大层次学习企业架构框架TOGAF

目录 前言 掌握TOGAF的三个层次 层次1:怎么学? 层次2:怎么用? 层次3:怎么思? 结束语 前言 对于一名架构师来讲,如果说编程语言是知识库层次中的入门石,那么企业架构框架则相当…

Linux编辑器-vim的使用

vim的基本概念 vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下&#…

【氮化镓】微波脉冲对GaN HEMT失效的影响

本文是一篇关于高功率微波脉冲作用下GaN HEMT(高电子迁移率晶体管)热电多物理场耦合失效的实验研究。文章由Xiangdong Li等人撰写,发表在2023年11月的《IEEE Transactions on Electron Devices》上。文章通过实验研究了在高功率微波脉冲应力下…

XiaodiSec day027 Learn Note 小迪渗透学习笔记

XiaodiSec day027 Learn Note 小迪渗透学习笔记 记录得比较凌乱,不尽详细 27day 还是 sql 知识点 数据类型注入: 数字型,字符型,搜索型,加密型 开始 数字型 数字型是 0-9 字符型 字符型是 a-z 等 在接收 sql …

27、Lua 学习笔记之五(Lua中的数学库)

Lua中的数学库 Lua5.1中数学库的所有函数如下表: math.pi 为圆周率常量 3.14159265358979323846 数学库说明例子方法abs取绝对值math.abs(-15)15acos反余弦函数math.acos(0.5)1.04719755asin反正弦函数math.asin(0.5)0.52359877atan2x / y的反正切值math.atan2(9…