Vue项目实战将接口用 webpack 代理到本地

Posted Java知音

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue项目实战将接口用 webpack 代理到本地相关的知识,希望对你有一定的参考价值。



在上一篇博文《》中,我们已经非常顺利的调用到了 cnodejs.org 的接口了。但是,我们可以注意到我们的src/api/index.js 的第一句,就是:


// 配置API接口地址
var root = 'https://cnodejs.org/api/v1'



当然,这并不是最重要的事情,而是 cnodejs.org 帮我们把接口处理得很好,解决了跨域的问题。而我们的实际项目中,很多接口都是不允许我们这样跨域请求的。


而我们的开发环境下,不可能跑到服务器上直接开发,或者在本地直接搞一个服务器环境,这样就违背了我们前后端分离开发的初衷了。


如何解决这个问题呢?其实非常好办,要知道 跨域不是接口的限制 而是浏览器为了保障数据安全做的限制。因此,一种方法可以解决,那就是打开浏览器的限制,让我们可以顺利的进行开发。但是无奈的是,最新的 chrome 浏览器好像已经关闭了这个选项,那么我们只能采用另外一种方法了——将接口代理到本地。


配置 webpack 将接口代理到本地

好在vue-cli 脚手架工具已经充分的考虑了这个问题,我们只要进行简单的设置,就可以实现我们的目的。


我们打开 config/index.js 文件,找到以下代码:

dev: {
   env: require('./dev.env'),
   port: 8080,
   autoOpenBrowser: true,
   assetsSubDirectory: 'static',
   assetsPublicPath: '/',
   proxyTable: {},
   cssSourceMap: false
 }


其中,proxyTable: {}, 这一行,就是给我们配置代理的。

根据 cnodejs.org 的接口,我们把这里调整为:

proxyTable: {
 '/api/v1/**': {
   target: 'https://cnodejs.org', // 你接口的域名
   secure: false,
   changeOrigin: false,
 }
}


OK,我们这样配置好后,就可以将接口代理到本地了。


更多接口参数配置,请参考 https://github.com/chimurai/http-proxy-middleware#options

webpack 接口配置文档 https://webpack.js.org/configuration/dev-server/#devserver-proxy


重新配置 src/api/index.js 文件

// 配置API接口地址
var root = '/api/v1'



值得注意的事情是,配置完成后,是不会立即生效的,我们需要重启我们的项目。

我们按 ctrl + c 停止掉之前的服务,然后重新输入命令 npm run dev 重启项目,就可以了。

Vue项目实战(六)将接口用 webpack 代理到本地


如上图所示,我们可以清晰的看到,我们跑的服务,先开启了一个代理。

重新跑起来之后,我们看下我们的项目在浏览器中的表现:

Vue项目实战(六)将接口用 webpack 代理到本地



状态码为 304 代表这个数据没有发生变化,直接读取本地缓存了。关于 http 状态码 的部分,请参考https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81,这里不做过多的说明。


我们再看一下数据是不是正常的过来了。切换到 Previdw 选项卡查看:


没有问题,数据过来了。


好,到这里,我们已经顺利的将接口代理到本地,并且数据读取出来了。我们开始准备下面的工作吧!


链接:http://blog.csdn.net/fungleo/article/details/77601761

推荐阅读

 











以上是关于Vue项目实战将接口用 webpack 代理到本地的主要内容,如果未能解决你的问题,请参考以下文章

VueJs 填坑日记之将接口用webpack代理到本地

webpack+vue-cli中代理配置(proxyTable)

webpack之proxyTable设置跨域

构建:vue项目配置后端接口服务信息

在vue项目中配置proxy解决跨域问题

vue-cli下配置webpack的proxy参数进行反向代理