要串接 LINE Messaging API之前,LINE 是如何找到我的 Backend?因此要讓其他裝置,甚至外部服務連到 Backend,先來理解一個請求是如何找到 Server 的,從 Host、IP Address 和 Port 開始。
以目前的網址為例: http://localhost:8081/api/chat
http://localhost:8081/api/chat
│ │ │
│ │ └─ Port
│ └─────────── Host
└────────────────── Protocol
是一個 Loopback Hostname,會指向目前使用的裝置。
所以:http://localhost:8081 表示在本地電腦上尋找 8081 Port 的服務。那如果要從手機上開啟呢?我們沒辦法在手機上入同樣的 localhost,就自動找到電腦上的 Java Backend,手機就需要透過 IP Address。
IP Address 可以用來辨識網路中的主機。如果把同一個區域網路想像成一個大型社區,IP Address 就像每一戶的位置。知道 IP Address 後,手機就能可以透過這個位址找到我的電腦。而當天一台電腦同時執行瀏覽器、Java Backend、資料庫或其他程式時,要怎麼知道我要找的是哪一個服務?這就是 Port 的工作。
Port 就像主機上的不同剪票口,當請求找到這台主機後,可以透過不同的 Port,找到要連線的網路服務。不同的服務可以監聽不同的 Port,等待請求進來。
了解這些概念後,接著直接來測試:如果手機和電腦連到同一個 Wi-Fi,手機能不能透過 IP Address 找到電腦上的服務?
在終端機輸入 ipconfig ,找到
網頁從 http://localhost/ 變成 http://192.168.1.123/
手機也可以連到
目前因為手機和電腦位於同一個區域網路。手機可以找到這台電腦上的服務。但如果要串接 LINE Messaging API,訊息的來源並不是我的手機直接呼叫 Java Backend,而是會經過 LINE Platform
這樣 Backend 就需要提供一個能夠存取的 Endpoint 給 LINE Platform 。