根据环境的不同来动态设置请求 baseUrl配置。

根据环境的不同来动态设置请求 baseUrl配置。

1. 创建环境变量文件

在项目根目录下创建 .env.development.env.production 文件。

.env.development 文件内容:
VUE_APP_BASE_URL = http://development-api.example.com
.env.production 文件内容:
VUE_APP_BASE_URL = http://production-api.example.com

2. 配置 axios(或者其他请求工具) 的 baseUrl

注意: 在Vue2和Vue3中获取环境变量的方法有所不同

  • 在Vue2(Webpack、Vue CLI等构建工具)中通过 process.env 提供环境变量。

baseURL: process.env.VUE_APP_BASE_URL

  • 在 Vue3(Vite 项目)中,import.meta.env 是访问环境变量的标准方式。(下面的示例以Vue3为例子)

baseURL: import.meta.env.VUE_APP_BASE_URL

src 目录下创建一个 utils 文件夹,并在其中创建一个 request.js 文件。

import axios from 'axios';

const service = axios.create({
    baseURL: import.meta.env.VUE_APP_BASE_URL,
    timeout: 5000
});

export default service;

3. 在组件中使用

在组件中引入并使用这个 service 实例。

<template>
  <div>
    <!-- 组件内容 -->
  </div>
</template>

<script setup>
import service from '@/utils/request';

const fetchData = async () => {
  try {
    const response = await service.get('/api/data');
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
};

fetchData();
</script>
这样,在开发环境和生产环境中,请求的 baseUrl 会根据环境变量自动切换。

使用场景

在Vue2中

  • 开发环境:运行 npm run serve 时,Vue CLI 会加载 .env.development 文件中的变量。
  • 生产环境:运行 npm run build 时,Vue CLI 会加载 .env.production 文件中的变量。

在Vue3中

  • 开发环境:运行 npm run dev 时,Vite 会加载 .env.development 文件中的变量。
  • 生产环境:运行 npm run build 时,Vite 会加载 .env.production 文件中的变量。
在uni-app中,如果你想让请求baseUrl 设置动态的,通常你会将它作为配置项存储,并在需要的时候动态获取。下面是一个简单的示例: 首先,在项目配置文件(如 `config.js` 或者环境变量文件 `env.js` 中),你可以定义一个变量来存储 baseUrl: ```javascript // config.js export const baseURL = process.env.BASE_URL || &#39;https://your-api.example.com&#39;; ``` 或者 ```javascript // env.js (如果在 Vue CLI 项目) const baseUrl = process.env.BASE_URL || &#39;https://your-api.example.com&#39;; export default { BASE_URL: baseUrl, }; ``` 然后,在你的请求封装模块中,引入这个配置动态设置: ```javascript import axios from &#39;axios&#39;; import { baseURL } from &#39;@/config&#39;; // 如果在 Vue 文件中 import const service = axios.create({ baseURL, timeout: 5000, // 请求超时时间 headers: {&#39;Content-Type&#39;: &#39;application/json&#39;}, // 默认请求头 }); // 现在每次发送请求时,都会使用当前的 baseUrl service.get(&#39;/api/data&#39;).then(response => { console.log(response.data); }); ``` 如果你需要在组件内部动态切换 baseUrl,可以在组件的生命周期钩子或计算属性中修改: ```javascript export default { data() { return { apiUrl: this.$options.baseURL, // 组件初始化时默认值 }; }, computed: { baseApiUrl() { // 动态逻辑,例如根据不同环境、登录状态等改变 baseUrl if (isProduction()) { return `${this.apiUrl}/prod`; } else { return `${this.apiUrl}/dev`; } }, }, methods: { async fetchData() { await service.get(`/api/data`).then(response => { // 使用动态baseApiUrl 进行请求 }); }, }, }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值