shuwenkai
侠客
侠客
  • 最后登录2025-02-17
  • 发帖数12
  • 社区居民
阅读:7595回复:1

根据变量选择动态获取接口域名或者固定域名

楼主#
更多 发布于:2020-06-10 13:50
今天产品提出一个神奇的需求,接到需求我是懵逼的


要求根据一个变量判断,是请求当前地址栏的域名还是请求固定的配置文件中的url(因为有可能将前端build代码嵌入到后端Java代码中)


其实我是拒绝的!没办法,官大一级压死人,搞!!!!




我的思路是定义一个全局变量,放在index.html之中,然后axios实例化的时候去获取这个变量,根据这个变量来改变我的baseUrl


事实证明思路是可行的,先在public->Index.html中添加js代码,为了不让用户可以浏览器控制台直接操作代码,将我们的代码进行一次代理,设置只读属性,严格模式下会报错,非严格模式下会忽略赋值,详情请自行百度javascript的
对象可读属性设置
Object.defineProperty(window,"myswith",{
        value:true,
        writable: false,
        enumerable: true,
        configurable: true
      })

然后来到我们自己封装的axios文件,在axios.create方法中添加如下代码
// 创建axios实例
const service = axios.create({
  baseURL: window.myswith ?process.env.VUE_APP_BASE_API:window.location.protocol + '//' + window.location.host,
  timeout: Config.timeout, // 请求超时时间
})




现在我们发起请求的时候就会自动去获取window.myswith的值来判断是直接获取当前域名还是根据配置文件固定的地址

npm run build之后也是生效的,我们直接去dist文件夹中的index.html找到我们最开始添加的可读属性,后续直接

在项目部署之前修改这里的值就可以改变请求的域名了
doubleyong
管理员
管理员
  • 最后登录2026-05-25
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
沙发#
发布于:2020-06-10 14:06
楼主,666
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号