在做BI项目的时候,因为后台修改了接口的前缀,导致我直接从后台获取URL,但是后面出现了一个奇怪的现象
在本地环境的时候正常,首页饼图可以正常显示,但是生产环境就出现问题,不能正常显示,找了很久一直没有找到问题的原因,查看问题之后,发现生产环境在前面添加了一个项目名称‘tb’,正常接口应该是下面这样
之前用的是原生的axios,以为是这个问题,但是我改成了封装的axios,发现问题还是没解决,最后找到了问题的原因,是因为在调用接口的时候前面没有 ‘/’的原因
解决办法:
在接口前面添加‘/’就可以了
代码:
//运行态调用接口获取数据 async getSqlData() { let api = this.allParamsObj.configData.selTableName //原生方式 // axios.defaults.baseURL = process.env.VUE_APP_URL // await axios.get('/'+api, { // params: this.form // }) // .then(res => { // if (res.data.code == 200) { // let data = res.data.data // this.relationship = data.relationship // this.renderBiData && this.renderBiData(JSON.stringify(res.data)) // } // }) //用axios封装的 下面这种方式注意data await this.$ajax.get('/'+api, this.form).then(res => { if (res.code == 200) { let data = res.data this.relationship = data.relationship this.renderBiData && this.renderBiData(JSON.stringify(res)) } }) },
原因分析:
加斜杠和不加斜杠的区别就是,斜杠会直接指向项目里面的具体文件,而不加的时候只会指向项目的最外层,所以就会拼接上一个项目名称