本次對接一個票務系統的時候,對方的 API 需要加白名單後才可以訪問,我當時就提出了個問題。
問:那我在本地怎麼除錯開發啊?(因為我開發機 IP 是不固定的)
答:測試環境也要加,要不然怎麼開發呢?
博文源地址 http://blog.phpor.me/tools/2015/11/29/tcp-proxy-for-api-white-list.html
想了一下跟他們爭肯定是爭不過的了,那就考慮如何滿足他們,想了一下,我有自己的公網伺服器 IP,本地測試環境直接請求這臺機器,它再把請求轉發給相應的 API,這樣我不管在哪裡都可以開發了。
API 那邊的 Host 還是 IP,即 http://x.x.y.z:port/api-route,這樣服務端的那裡只需要一個 TCP Proxy 就可以了,Google 了一下 tcproxy 這個小巧的非常入眼。
安裝及使用
$ git clone https://github.com/dccmx/tcproxy.git
$ cd tcproxy && make ; echo $? # 輸出 0 代表安裝成功
$ nohup ./src/tcproxy "0.0.0.0:19999 -> rr{x.x.y.z:port}" &
程式碼裡面的 Host 直接換成我自己的 ip:19999 埠就可以訪問了。
使用這個有個注意的點,就是你的程式碼要有環境之分,不同的環境應可以自定義配置,參考 12 Factor 的配置