Debug - Development 環境一條龍

「就是想要用自己的手機、自己的網路、自己的APP、自己的API」我吵著說

「好啦好啦~~那不就是用NGROK就行了嗎…」前輩一臉無耐的表示著

因為目前的開發環境是 Mac ,所以下面就單純針對Mac去說明

首先說明,我想解決的問題是當我正在開發app,同時間我有一些資料是來自於某個第三方的API

這時候我不在APP裡面直接對著這個API呼叫

而是自己寫了一個Service去統整我的APP所需要的API,

但開發階段,考量速度、成本,我又沒有實際的 Server 去 Run 我的Service

所以我會把自己的開發環境當成一個Server去跑我的 Service 讓我的 APP使用

但是我的APP和我的電腦可能不在同個網段,那我怎麼能在我的 APP裡存取得到得到所謂的 localhost 或 127.0.0.1 呢?

所以!!為了解決這個問題,讓開發起來更方便,我們需要用到的工具就是ngrok

首先,我們透過指令把它安裝起來

$> brew cask install ngrok

接著照一般開發 Service 的方式把服務跑起來

以我這邊的例子,我會用 Rails 去跑我的 Service

所以我會用下面這段,讓它去跑在 127.0.0.1

$> rails s -b 127.0.0.1

因為我這個 Service 就使用 3000 port ,所以當我把它跑起來之後會出現

接著,你打開 PostMan 或 Curl 工具先測試一下你的服務是不是正常的

我的 Service 因為一些原因,有在專案裡面設了 Route 的設定,所以實際上會是只接受 api.localhost,

但如果是一般新專案,應該會是 localhost 或 127.0.0.1,所以我對我的 API 叫一個 GET 會得到像這樣的資料

接著,我要透過 ngrok 替我產生一個外部可訪問的url

$> ngrok http api.localhost:3000

or 

$> ngrok http 3000

如此一來,我就可以透過 ngrok 幫我產生的 host 去存取到我的 Run 在 Local 的服務了

完成,接下來我只需要確保兩件事

我的服務和我的ngrok都保持開啟的狀態,那麼我就可以開心的開發我的APP和我的API,

如果遇到 API 要 Demo 因為我的服務是在上面的條件滿足的情況下是公開的

所以只要打包一個 APK 或是 IPA,那麼對方也能夠立刻看到我想 Demo 的效果

當你不要再分享時,只需要在你本機把服務關掉,那麼這個Demo App也不用做任何事就自動會失效。

以上

 

下課

參考

https://rubyplus.com/articles/4191-How-to-Expose-Local-Rails-App-to-the-Public-Internet