因为这个二级站本身是与主站的账号系统联动的,我又想做个其他的系统,整个后台数据是通用的,所以在考虑把之前的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,然而遇到了诸多问题:
request转发如果不区分method,那么pip的时候会undefined。
区分了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也变成数据存储方式呢……?
未完待续。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。