事情的起因
由于最近在使用Angular + node开发,采取的办法一直都是约定好接口,然后node实现,再编写前端。但是这样有一个很麻烦的问题:编写前端的时候无法调用接口,不能很好地测试,只能一口气写完再编译后放到后端来测试。
经常会因为解决一些小的问题而反复的编译、调试,浪费很多不必要的时间。
解决方案
偶然发现webpack-dev-server可以实现代理请求(把指定的url规则转发到其他地址),所以就试了一下。由于项目使用了Angular-cli构建,并没有webpack配置文件,悲伤。于是又去google上搜索了一圈Angular-cli,找到了Angular-cli实现代理的解决方案。
在项目目录下创建文件proxy.conf.json:
{
"/api": {
"target": "http://localhost:3000",
"secure": false
}
}
1、/api为代理规则,因为我接口都是以api开头的,大家可以根据自己的实际情况设置
2、target为目标服务地址,比如一个get请求的地址为http://localhost:4200/api/cards/all会被代理为
http://localhost:3000/api/cards/all
secure为是否开启ssl验证,在这里设置为false
接下来只需要启动node服务,再使用ng serve --proxy-config proxy.conf.json来启动自己的Angular项目就可以完美实现代理了,简直不要太好用