news 2026/3/7 23:05:54

记录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/3/6 8:39:38

AI会议管理神器:如何用AI Deadlines轻松追踪全球学术会议?

AI会议管理神器&#xff1a;如何用AI Deadlines轻松追踪全球学术会议&#xff1f; 【免费下载链接】ai-deadlines :alarm_clock: AI conference deadline countdowns 项目地址: https://gitcode.com/gh_mirrors/ai/ai-deadlines 作为一名AI研究者&#xff0c;你是否曾经…

作者头像 李华
网站建设 2026/3/6 17:00:28

5天变板砖!豆包手机助手为何被集体“避雷”?

一、从爆火到被封&#xff0c;只用了5天 上周&#xff0c;字节跳动旗下AI助手“豆包”和中兴联合推出的这款努比亚工程机&#xff0c;3499元的价格&#xff0c;某鱼被炒到上万还一机难求。为啥这么火&#xff1f;因为它真的太方便了&#xff01;你给手机看商品图&#xff0c;说…

作者头像 李华
网站建设 2026/3/5 23:34:43

中小学AI教育终极指南:创新课程完整部署方案

中小学AI教育终极指南&#xff1a;创新课程完整部署方案 【免费下载链接】ai-edu-for-kids 面向中小学的人工智能通识课开源课程 项目地址: https://gitcode.com/datawhalechina/ai-edu-for-kids 项目愿景与教育理念 在人工智能技术飞速发展的时代&#xff0c;培养青少…

作者头像 李华
网站建设 2026/3/7 12:11:29

轻量级Markdown查看器Markn:重新定义文档预览体验

轻量级Markdown查看器Markn&#xff1a;重新定义文档预览体验 【免费下载链接】markn Lightweight markdown viewer. 项目地址: https://gitcode.com/gh_mirrors/ma/markn 在数字化工作日益普及的今天&#xff0c;Markdown已成为技术文档、博客写作和笔记整理的首选格式…

作者头像 李华
网站建设 2026/3/6 17:00:24

IEC101设备数据 转 IEC104项目案例

1 案例说明 设置网关采集IEC101设备数据把采集的数据转成IEC104协议转发给其他系统。 2 准备工作仰科网关。支持采集IEC101设备数据&#xff0c;IEC104协议转发。电脑。IP设置成192.168.1.198&#xff0c;和网关在同一个网段。网线、12V电源。 3 配置VFBOX网关采集101设备数据安…

作者头像 李华
网站建设 2026/3/7 12:11:28

艺术宝库:开启你的数字艺术收藏之旅

艺术宝库&#xff1a;开启你的数字艺术收藏之旅 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 还在为散落在各处的艺术图片无法统一管理而烦恼吗&#xff1f;手机里装了好几个应用却都不满意&#xff1f;今天我们要一起认识…

作者头像 李华