1. 背景
在日常開發中經常需要演示和調試未上線的網站或者API,diode 應運而生,簡單的快速的可以發佈本地的網站或者API服務到外網,然後通過diode.link的二級域名訪問你發佈的東西,十分方便。本文介紹如何簡單快速的通過diode發佈本地的API服務。
2. 三步發佈本地API服務
2.1 啓動一個本地服務
我本地有一個開發的中的項目, 這個項目有一個健康檢查的API: GET /health, 該項目是基於nodejs框架express的,這裏不詳細介紹了總之它是一個提供RESTful API的服務,使用如下命令啓動:
npm run start
我的服務啓動後監聽本地3000端口。
2.2 安裝diode
curl -Ssf https://diode.io/install.sh | sh
2.3 發佈本地服務
diode publish -public 80:3000
上面這個命令的意思是: 本地3000端口的服務被髮布到diode的80端口上,且這個發佈是公開的(當然也可以更多安全發佈策略)。
首次發佈比較慢,diode會初始化一個client的ID, 這個ID作爲diode.link的自域名可以在外網被訪問。上面命令的控制檯輸出大致如下:
[INFO] Diode Client version : v0.6.1 02 Nov 2020
[INFO] Client address : 0xaf9e2d540232d394997480889042a2e9a3d11beb
[INFO] Fleet address : 0x6000000000000000000000000000000000000000
[INFO] Connected to host: as1.prenet.diode.io:41046, validating...
[INFO] Network is validated, last valid block: 1001299 0x000024f36df70e4b0694bd7f604ed326dddd72cc25cbe8068af9934f348e11d6
[INFO]
[INFO] Port <name> : <extern> <mode> <protocol> <allowlist>
[INFO] Port 80 : 3000 public any
[INFO] Port was not published port = 80 server=as1.prenet.diode.io:41046 server=as1.prenet.diode.io:41046
[INFO] Port was not published port = 80 server=as1.prenet.diode.io:41046
^C[INFO] 1/5 Stopping socksserver
[INFO] 2/5 Stopping proxyserver
[INFO] 3/5 Stopping configserver
[INFO] 4/5 Cleaning pool
[INFO] 5/5 Closing logs
➜ ~ diode publish -public 3000:80
[INFO] Diode Client version : v0.6.1 02 Nov 2020
[INFO] Client address : 0xaf9e2d540232d394997480889042a2e9a3d11beb
[INFO] Fleet address : 0x6000000000000000000000000000000000000000
[INFO] Connected to host: as1.prenet.diode.io:41046, validating...
[INFO] Network is validated, last valid block: 1001331 0x0000793c211a3a7707fcf13b5275a84a961c7f19857ce03c9c0e8d3026bc0b16
[INFO]
[INFO] HTTP Gateway Enabled : http://0xaf9e2d540232d394997480889042a2e9a3d11beb.diode.link/
[INFO] Port <name> : <extern> <mode> <protocol> <allowlist>
[INFO] Port 3000 : 80 public any
3. 驗證
通過上面的三步,可以從最後一步最後看到本地程序已經被髮布了,從控制檯可以看到一個Client address
, 現在你可以在外網使用: http://<client address>.diode.link 如同使用本地的服務 http://localhost:3000 , 使用curl測試一下health接口:
curl -s -XGET https://0xaf9e2d540232d394997480889042a2e9a3d11beb.diode.link/health
測試結果符合預期, 測試成功!
4. 總結
Diode是我看到第一個免費的且超級方便的本地服務發佈工具,在安全性它還有一些高級的設置可以繼續學習和研究, 比如只允許特定的地址訪問被髮布的外網服務;diode也可以發佈本地靜態文件所以網站也是可以,這對前端的同學也很有幫助。
今天介紹的Diode希望可以幫助開發的朋友。