1. 背景
App1有一個(gè)很常用的功能,該功能被其它項(xiàng)目組B看中,App2想以最小的代價(jià)最快上線,就是那種頁面功能直接復(fù)用,避免開發(fā)。
2. 方案
以iframe將App1中的功能頁面嵌入到App2中,雖然說這種方案不通用,但是確實(shí)也是改動(dòng)最小了。
比如已有的項(xiàng)目設(shè)計(jì)方案如下,APP1和App2均是前后端分離的設(shè)計(jì)方案,如下圖所示:

1614942601080.png
方案一:
用戶請求進(jìn)來后,先通過App2的前端發(fā)送請求給App2獲取權(quán)限數(shù)據(jù),比如userid,然后根據(jù)userid拼接新的url發(fā)送給App1從而獲取數(shù)據(jù),結(jié)合靜態(tài)的頁面即可。

1614943242326.png
此方案的優(yōu)點(diǎn)是,比較簡單App2不需要過多開發(fā),請求均是在App2的前端完成。但缺點(diǎn)是,在前端構(gòu)造的請求也就是過程3容易被篡改。
方案二:
用戶請求進(jìn)到Nginx,Nginx將后臺(tái)請求轉(zhuǎn)到APP,App2根據(jù)需要比如結(jié)合權(quán)限,將請求經(jīng)Nginx發(fā)給App1

1614943675857.png
該方案比方案一稍微麻煩些,需要在webapp端寫入稍微多一點(diǎn)的代碼(主要是構(gòu)造請求并在后臺(tái)將請求發(fā)給App1),但是后臺(tái)構(gòu)造的請求,相對比較安全。
目前方案也是采用的第二種。
后記
當(dāng)然這兩種方案其實(shí)都是應(yīng)急處理,代價(jià)較小,但是不適合陣地戰(zhàn)。最后還是要將其服務(wù)后以及模塊化才是更好的選擇。