news 2026/5/11 11:11:20

记录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/5/11 5:33:20

Smithbox终极指南:快速掌握游戏修改核心功能

Smithbox终极指南&#xff1a;快速掌握游戏修改核心功能 【免费下载链接】Smithbox Smithbox is a modding tool for Elden Ring, Armored Core VI, Sekiro, Dark Souls 3, Dark Souls 2, Dark Souls, Bloodborne and Demons Souls. 项目地址: https://gitcode.com/gh_mirror…

作者头像 李华
网站建设 2026/5/9 15:54:22

呼吸疾病+AI,人工智能正在改变慢病治疗

最近AI在医疗领域又搞了个大新闻&#xff01;这次是关于哮喘治疗的&#xff0c;有两方面的消息&#xff1a;一、AI设计的哮喘药物美国一家生物制药公司Generate:Biomedicines最近启动了三期临床试验&#xff0c;测试一款叫GB-0895的新药。这款药通过AI蛋白质生成模型Chroma&…

作者头像 李华
网站建设 2026/5/4 22:37:47

AI获客避坑指南:海南黑谷云科技有限公司助力规避风险

在当今数字化营销的浪潮中&#xff0c;AI获客成为众多企业拓展业务的重要手段&#xff0c;但市场上AI获客相关的机构、厂家、方案等鱼龙混杂&#xff0c;让不少用户陷入困境。许多不靠谱的AI获客生产厂家售后不完善、方案不贴合实际&#xff0c;不少口碑不佳的AI获客机构无法为…

作者头像 李华
网站建设 2026/5/10 11:59:38

OneBlog:搭建专业级Java博客系统的完整指南

OneBlog&#xff1a;搭建专业级Java博客系统的完整指南 【免费下载链接】OneBlog :alien: OneBlog&#xff0c;一个简洁美观、功能强大并且自适应的Java博客 项目地址: https://gitcode.com/gh_mirrors/on/OneBlog 想要快速搭建一个功能强大、界面美观的博客系统吗&…

作者头像 李华
网站建设 2026/5/2 7:06:43

天玑AIGEO优化系统口碑大比拼,谁家能拔头筹?

引言在当今竞争激烈的营销市场中&#xff0c;AIGEO优化系统的重要性日益凸显。天玑AIGEO优化系统更是备受关注&#xff0c;众多企业都在使用该系统以提升营销效果。那么&#xff0c;在众多应用天玑AIGEO优化系统的企业中&#xff0c;谁家能在口碑大比拼中拔得头筹呢&#xff1f…

作者头像 李华
网站建设 2026/5/11 2:25:07

如何快速创建响应式轮播:完整jQuery插件指南

如何快速创建响应式轮播&#xff1a;完整jQuery插件指南 【免费下载链接】bxslider-4 Responsive jQuery content slider 项目地址: https://gitcode.com/gh_mirrors/bx/bxslider-4 bxSlider是一款功能强大的轮播插件&#xff0c;专为创建响应式滑块、图片轮播和内容幻灯…

作者头像 李华