首页 > 其他分享 >web部署时通过静态文件配置请求地址

web部署时通过静态文件配置请求地址

时间:2024-08-04 12:23:34浏览次数:15  
标签:web const defaultBaseUrl 静态 apiBaseUrl 地址 useConfigStore import config

web部署动态更改请求地址

通过访问根目录config配置实现在打包文件外部更改请求地址

1. 配置 Vite

export default defineConfig({
  base: '/', // 设置公共路径
})

2. 创建配置文件

开发:

根目录创建config.json文件

不影响proxy代理

{
  "apiBaseUrl": "/"
}
部署

dist文件 根目录创建config.json文件

{
  "apiBaseUrl": "https://example.com/api"
}

3. 加载配置文件

src\utils\configure.ts

export const defaultBaseUrl = 'https://example.com/api/'
export async function loadConfig() {
  try {
    const response = await fetch(`${import.meta.env.BASE_URL}config.json`)
    if (!response.ok) {
      console.error('获取配置文件失败')
    }
    const config = await response.json()
    return config
  } catch (error) {
    console.error('加载配置文件时出错:', error)
    return {
      apiBaseUrl: defaultBaseUrl,
    }
  }
}

4. 配置 Pinia 存储

src/store/config.js 中定义一个存储来管理配置:

import { defineStore } from 'pinia';
import { defaultBaseUrl } from '@/utils/configure'

export const useConfigStore = defineStore('config', {
  state: () => ({
    apiBaseUrl: ''
  }),
  actions: {
    setConfig(config) {
      this.apiBaseUrl = config?.apiBaseUrl ?? defaultBaseUrl
    },
  }
});

6. 在应用启动时加载配置并设置存储

import { createApp } from 'vue';
import App from './App.vue';
import { loadConfig } from './config';
import { createPinia } from 'pinia';
import { useConfigStore } from '@/store/piniaStore/config';

loadConfig().then((config) => {
  const { setConfig } = useConfigStore(pinia)
  setConfig(config)

  const app = createApp(App)
  app.mount('#app')
})

7. 配置 Axios 实例

import axios from 'axios'
import { useConfigStore } from '@/store/piniaStore/config.js'
import { defaultBaseUrl } from '@/utils/configure'

const request = axios.create({
  baseURL: defaultBaseUrl,
  timeout: 600000,
})
request.interceptors.request.use((config) => {
  config.baseURL = useConfigStore().apiBaseUrl || config.baseURL
  return config
})

标签:web,const,defaultBaseUrl,静态,apiBaseUrl,地址,useConfigStore,import,config
From: https://blog.csdn.net/JoveTAT/article/details/140890380

相关文章

  • 【002】Linux配置静态ip地址
    一、环境虚拟机版本:VMwareLinux镜像文件:CentOS-7-x86_64-Minimal-2207-02.iso主机系统:Windows11家庭中文版主机系统类型:64位操作系统,基于x64的处理器远程连接工具:宝塔远程工具二、配置静态ip1、将虚拟机的网络模式设置为NAT模式2、设置VMware的网络模式选择VM......
  • 第6天:信息打点-Web 架构篇&域名&语言&中间件&数据库&系统&源码获取
    #知识点:1、打点-Web架构-语言&中间件&数据库&系统等操作系统:有些漏洞出现的系统不一样、便于知道哪些漏洞可以在目标上攻击Windows&linux开发语言:漏洞的开发语言中间件容器IIS&Apache&Nginx&Tomcat&Weblogic&jboosASP&PHP&Java&python&JavaScript等2、打点-Web源码-......
  • CTFSHOW 萌新 web9 解题思路和方法(利用system函数执行系统命令)
    点击题目链接,从题目页面显示的代码中可以看到我们可以使用命令执行漏洞查看网站的文件:我们首先使用system函数并使用ls命令查看当前目录下的所有文件:因为题目中提示flag在config.php文件中,所有可以直接读取该文件当然,如果题目中没有说明falg在那个文件中,我们可以使用......
  • CTFSHOW 萌新 web10 解题思路和方法(passthru执行命令)
    点击题目链接,分析页面代码。发现代码中过滤了system、exec函数,这意味着我们不能通过system(cmd命令)、exec(cmd命令)的方式运行命令。在命令执行中,常用的命令执行函数有:system(cmd_code);exec(cmd_code);shell_exec(cmd_code);passthru(cmd_code);可以发现,passthru未被过滤,......
  • C++实现静态链表
    #include<iostream>usingnamespacestd;//定义静态链表的最大容量constintMAX_SIZE=100;//节点类classNode{public:intdata;//节点存储的数据intnext;//节点指向下一个节点的索引(在数组中的位置)//默认构造函数Node():data(0......
  • (Javaweb)Ajax,Axios,Vue
    目录一.Ajax 二.Axios 三.前端工程化四.接口文档的管理平台YAPI五.Vue项目六.Vue项目开发流程一.Ajax 1.通过Ajax从服务器端获取数据Ajax---JavaScript(网页行为)+XML(标记语言--用来存储数据) 客户端--浏览器 服务端在处理逻辑的时候,客户端处于等待状态等......
  • 测试面试宝典(四十四)—— APP测试和web测试有什么区别?
    一、系统架构和运行环境APP测试需要考虑不同的操作系统(如iOS、Android等)、设备型号和屏幕尺寸,以及各种网络连接状态(如2G、3G、4G、WiFi等)。而Web测试主要针对不同的浏览器(如Chrome、Firefox、IE等)和操作系统(Windows、Mac、Linux等),但对网络连接的要求相对较宽松。......
  • iOS开发基础146-深入解析WKWebView
    WKWebView是苹果在iOS8中引入的重要组件,它替代了UIWebView,为开发者提供了高性能、高稳定性的网页显示和交互能力。在本文中,我们将深入探讨WKWebView的底层架构、关键特性、使用方法和高级功能。一、WKWebView的底层架构WKWebView基于WebKit框架,采用多进程架构,将页面渲染和JavaS......
  • Nat网络地址转换实验
    一、实验拓扑 二、实验要求  三、实验思路 四、实验展示1.接口IP配置telnet路由器r1r2 r3pc2  2.全网可达(给边界路由器,私家路由器写上缺省,还要用到nat地址转换,多对多一对多,端口映射)因为左右两边路由器网段一样,所以左边的到不了右边这是其中一个原因......
  • Blazor Web 应用如何实现Auto模式
    本文介绍BlazorWeb应用Auto交互呈现模式的实现方案,如下示例是基于Known框架来实现的,该解决方案共有3个项目,具体实现步骤如下:1.前后端共用项目创建前后端共用类库项目Sample,定义系统的实体类、数据模型、服务接口、常量、枚举等,项目工程文件内容如下:<ProjectSdk="Microso......