浮生漫記API改造記錄

由於這個二級站自己是與主站的帳號系統聯動的,我又想作個其餘的系統,整個後臺數據是通用的,因此在考慮把以前的Server部分直接抽成api工程,對外提供接口。nginx

規劃了良久,發現「talk is cheap, show me the code」纔是真理。空規劃的時候會出現不少胡思亂想,只有真正編碼,纔會一點點去解決。bootstrap

首先是物理分離,整個Server部分被直接拿到一個新工程裏,依賴包乾掉了前臺表現的bower部分和bootstrap。跑一下,成功。segmentfault

而後是二級域名配置,簡直艱辛。首先配置nginx,以後怎麼解析都不對。和幾個朋友討論了一下,朋友說應該先在DNS那邊解析,然而我記得阿里雲那邊不能解到端口啊。以後跑去配置頁面,仔細讀了一下說明。api

二級域名 :
如:mail.example.com或abc.example.com,填寫mail或abc;跨域

能夠配置啊!因而新增DNS解析。讓朋友測一下,成功。session

以後就是實際動代碼了。post

我仍是沿用以前工程的想法,用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也變成數據存儲方式呢……?

未完待續。

相關文章
相關標籤/搜索