因为这个二级站本身是与主站的账号系统联动的,我又想做个其他的系统,整个后台数据是通用的,所以在考虑把之前的Server部分直接抽成api工程,对外提供接口。

规划了良久,发现“talk is cheap, show me the code”才是真理。空规划的时候会出现很多胡思乱想,只有真正编码,才会一点点去解决。

首先是物理分离,整个Server部分被直接拿到一个新工程里,依赖包干掉了前台表现的bower部分和bootstrap。跑一下,成功。

然后是二级域名配置,简直艰辛。首先配置nginx,之后怎么解析都不对。和几个朋友讨论了一下,朋友说应该先在DNS那边解析,然而我记得阿里云那边不能解到端口啊。之后跑去配置页面,仔细读了一下说明。

二级域名 :
如:mail.example.com或abc.example.com,填写mail或abc;

可以配置啊!于是新增DNS解析。让朋友测一下,成功。

之后就是实际动代码了。

我还是沿用之前工程的想法,用request把工程的/api请求转发到新port,然而遇到了诸多问题:

  1. request转发如果不区分method,那么pip的时候会undefined。

  2. 区分了post之后,在res.pip(res2)时,往前传的data是空的。当然res2是有值的。但是考虑到session维持,那么就要对headers进行传递,不能只传递res2.text或者body。

经过查找,果断放弃……替换了技术方案为CORS,在api工程里支持跨域和credentials调用,成功!

不过一测试就会发现问题:session无法维持。

参考了https://segmentfault.com/q/10... 这个答案后,得到了解决方案,NG在调用时增加withCredentials参数。其实在StackOverFlow里有一个答案也说过,但是我总觉得NG应该自带了,还是太想当然了。

如此一来,第一波就改完了。

接下来,首先是NG要在service里加一个封装,让我的请求自动携带这个配置。

其次是数据存储。我上传的图片都会放到Server的根目录,能否把img.site.com也变成数据存储方式呢……?

未完待续。


edel
98 声望3 粉丝

前端工程师,项目负责人,学习大数据技术中,希望获得数据挖掘、机器学习的打杂机会。