1. 背景
在日常开发中经常需要演示和调试未上线的网站或者API,diode 应运而生,简单的快速的可以发布本地的网站或者API服务到外网,然后通过diode.link的二级域名访问你发布的东西,十分方便。本文介绍如何简单快速的通过diode发布本地的API服务。
2. 三步发布本地API服务
2.1 启动一个本地服务
我本地有一个开发的中的项目, 这个项目有一个健康检查的API: GET /health, 该项目是基于nodejs框架express的,这里不详细介绍了总之它是一个提供RESTful API的服务,使用如下命令启动:
我的服务启动后监听本地3000端口。
1
| curl -Ssf https://diode.io/install.sh | sh
|
2.3 发布本地服务
1
| diode publish -public 80:3000
|
上面这个命令的意思是: 本地3000端口的服务被发布到diode的80端口上,且这个发布是公开的(当然也可以更多安全发布策略)。
首次发布比较慢,diode会初始化一个client的ID, 这个ID作为diode.link的自域名可以在外网被访问。上面命令的控制台输出大致如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| [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://.diode.link 如同使用本地的服务 http://localhost:3000 , 使用curl测试一下health接口:
1
| curl -s -XGET https://0xaf9e2d540232d394997480889042a2e9a3d11beb.diode.link/health
|
测试结果符合预期, 测试成功!
4. 总结
Diode是我看到第一个免费的且超级方便的本地服务发布工具,在安全性它还有一些高级的设置可以继续学习和研究, 比如只允许特定的地址访问被发布的外网服务;diode也可以发布本地静态文件所以网站也是可以,这对前端的同学也很有帮助。
今天介绍的Diode希望可以帮助开发的朋友。