news 2026/4/15 16:17:58

记录vue动态切换访问后台服务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
记录vue动态切换访问后台服务

1.在public文件夹内的配置文件配置服务ip

const VUE_APP_URL = 'http://127.0.0.1:2222' // 在线服务器地址 const VUE_APP_URL2 = 'http://127.0.0.1:1111' // 离线本地地址 const IS_FLAG = "true" // 是否启用在线离线切换 const IS_STATUS = "onLine" // 初始化时在线-onLine/offLine

2.修改request.ts,进行判断

import Axios, { AxiosResponse } from 'axios'; import { ElMessage, ElLoading } from 'element-plus'; import router from '../router' // 全局变量声明(保持不变) declare const VUE_APP_URL: any; // 兼容字符串/对象 declare const VUE_APP_URL2: any; declare const IS_FLAG: any; declare const IS_STATUS: any; const sevice = Axios.create({ timeout: 300000, // 移除静态baseURL,改为拦截器动态设置 }); let loadingInstance: any let loadSign = true // const router = useRouter(); sevice.interceptors.request.use(config => { // ========== 核心:根据IS_STATUS动态设置baseURL ========== // 1. 读取/初始化IS_STATUS(优先localStorage,无则用全局变量) let baseURL = VUE_APP_URL if (IS_FLAG == "true") { const storageIsStatus = localStorage.getItem('IS_STATUS'); const storageIsFlag = localStorage.getItem('IS_FLAG'); if (storageIsStatus && storageIsFlag) { if (storageIsFlag == "true" && storageIsStatus == "offLine") { baseURL = VUE_APP_URL2 } } else { // 初始化localStorage localStorage.setItem('IS_STATUS', String(IS_STATUS)); localStorage.setItem('IS_FLAG', String(IS_FLAG)); if (String(IS_FLAG) == "true" && String(IS_STATUS) == "offLine") { baseURL = VUE_APP_URL2 } } }else{ localStorage.removeItem('IS_STATUS') localStorage.setItem('IS_FLAG', String(IS_FLAG)); } config.baseURL = baseURL if (sessionStorage.getItem('Authorization')) { config.headers['Authorization'] = sessionStorage.getItem('Authorization'); } loadSign = sessionStorage.getItem('loadSign') ? JSON.parse(sessionStorage.getItem('loadSign') || 'true') : false if (loadSign) { loadingInstance = ElLoading.service({ // 加载loading fullscreen: true, text: 'Loading', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0)' }) } return config; }, error => { if (loadSign) { loadingInstance.close() } // error回调信息弹窗 ElMessage({ showClose: true, message: error && error.data.error.message, type: 'error' }) return Promise.reject(error) }); sevice.interceptors.response.use(response => { if (response.data.code === 200) { // ElMessage.success(response.data.message) } else { if (response.data.code !== 401) { ElMessage.error(response.data.message) } } if (loadSign) { loadingInstance.close() } return response; }, error => { if (loadSign) { loadingInstance.close() } const err = error.response.data.message console.log(error.response.data) if (error.response.data.code !== 401) { ElMessage.error({ message: err, //error.message, type: 'error', duration: 3 * 1000 }) } if (error.response.data.code === 401) { router.push({ path: '/' }) sessionStorage.setItem('loadSign', 'false') sessionStorage.clear() // localStorage.clear() } if (error.response.data.code === 403) { router.push({ path: '/401' }) } return Promise.reject(error) }); export default sevice;

3.添加心跳测试

import request from './../../request' export function testHeart() { return request({ url: '/system/dataSynchronization/heart', method: 'post' }); }

4.在界面添加切换按钮测试

<template> <div> <el-button @click="toChangeDataSource">切换</el-button> </div> </template> <script lang="ts"> import { testHeart } from '@/server/api/testHeart'; export default defineComponent({ const toChangeDataSource = async () => { if (localStorage.getItem('IS_FLAG') == "true") { if (localStorage.getItem('IS_STATUS') == "offLine") { localStorage.setItem('IS_STATUS', "onLine"); } else { localStorage.setItem('IS_STATUS', "offLine"); } let res = await testHeart(); } } return { toChangeDataSource } }); </script>

5.浏览器F12查看是否成功动态切换服务请求

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:59:38

NetGuard完整指南:简单几步掌控Android应用网络权限

想要彻底解决Android应用偷跑流量、耗电严重的问题吗&#xff1f;NetGuard这款开源网络管理工具正是你需要的解决方案。无需root权限&#xff0c;通过本地网络技术实现精准的网络控制&#xff0c;让每个应用的网络访问权限都在你的掌握之中。本指南将带你从零开始&#xff0c;快…

作者头像 李华
网站建设 2026/4/16 12:02:27

uesave完整教程:解锁Unreal Engine游戏存档编辑新技能

uesave完整教程&#xff1a;解锁Unreal Engine游戏存档编辑新技能 【免费下载链接】uesave-rs 项目地址: https://gitcode.com/gh_mirrors/ue/uesave-rs 存档管理困境&#xff1a;玩家们共同的烦恼 在游戏世界里&#xff0c;你是否曾经面临这样的尴尬局面&#xff1f;…

作者头像 李华
网站建设 2026/4/16 12:01:56

从零开始搭建BUCK电路:TL494控制芯片实战手册

从零开始搭建BUCK电路&#xff1a;TL494控制芯片实战手册 【免费下载链接】BUCK电路-TL494方案资源下载 本仓库提供了一个完整的BUCK电路设计方案&#xff0c;基于TL494控制芯片。该方案包含了详细的原理图、PCB设计文件以及Gerber文件&#xff0c;方便用户进行电路的设计、验证…

作者头像 李华
网站建设 2026/4/14 2:04:15

力扣--3433. 统计用户被提及情况

前言&#xff1a;这是力扣第3433的一道中等算法题&#xff0c;废话不多说&#xff0c;看题目和代码&#xff01;题目&#xff1a;给你一个整数 numberOfUsers 表示用户总数&#xff0c;另有一个大小为 n x 3 的数组 events 。每个 events[i] 都属于下述两种类型之一&#xff1a…

作者头像 李华
网站建设 2026/4/14 7:30:35

**2025小说软件推荐,助力高效创作**

在当今数字化时代&#xff0c;小说软件已成为众多写作者的得力助手。它不仅能够提供便捷的创作环境&#xff0c;还能帮助写作者提高创作效率和质量。然而&#xff0c;市场上的小说软件琳琅满目&#xff0c;如何选择一款适合自己的软件成为了许多写作者面临的难题。据《2025年中…

作者头像 李华
网站建设 2026/4/15 15:23:16

如何解决OpenVLA微调后推理中的归一化问题:完整指南

如何解决OpenVLA微调后推理中的归一化问题&#xff1a;完整指南 【免费下载链接】openvla OpenVLA: An open-source vision-language-action model for robotic manipulation. 项目地址: https://gitcode.com/gh_mirrors/op/openvla OpenVLA是一个开源的视觉-语言-动作模…

作者头像 李华