VUE Axios 如何配置反向代理做到前后端分离

使用 VUE 框架的主要目的就是为了做到前后端分离。

前后端分离又有一个麻烦的问题就是 CORS 跨域的问题。

下面的配置将会对如何在 VUE 项目中进行配置进行一些简单说明。

main.js 中导入项目

VUE 使用 axios 进行调用。

因此在 VUE 项目中,我们需要导入 axios 包。

这里有 2 个。

import axios from 'axios';
import VueAxios from 'vue-axios';

axios是基于promise的HTTP库,可以使用在浏览器和node.js中,它不是vue的第三方插件

axios使用的时候不能像vue的插件(如:Vue-Router、VueX等)通过Vue.use()安装插件,需要在原型上进行绑定:Vue.prototype.$axios = axios;

vue-axios是axios集成到Vue.js的小包装器,可以像插件一样安装:Vue.use(vueAxios);

简单来说,axios 是基础,vue-axios 对 axios 进行了封装,以便于更加容易的使用。

在项目中使用

需要在创建 App 的时候进行初始化。

在这个初始化的时候,我们可以使用 use 和 provide 以便于全局调用。

  .use(VueAxios, axios)
  .provide('axios',axios)

2022-09-08_17-07-54

使用上面的代码进行全局调用。

vue.config.js 设置反向代理

我们还需要在 vue.config.js 中设置反向代理。

这个方向代理的目的就是为了解决 VUE 项目中 CORS 跨域的问题。

    proxy: {
      '/api':{
        target: 'https://api.usvisatrack.com/',
        changeOrigin: true,
        secure: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }

在程序中调用

在程序中,使用下面的方法就可以实现调用了。

  mounted() {
    this.axios
      .get('/api/visa/date?start=2022-04-01&end=2022-10-01')
      .then(response => (this.transactions = response.data));
  }

因为我们设置了全局,所以可以使用 this 来直接调用。

然后将返回的结果设到变量中即可。

如上图,我们将调用结果返回到页面中使用的变量里。