大家好,我是你们的章鱼猫。
今天要给大家介绍一个牛逼的功能 webify,它能够直接将函数或者命令行工具转化为 Web 服务。比如我们将 jq 封装成一个 Web 服务如下:
![c5744b6d4ae666a7d9731f0c92b86c64.png](https://img-blog.csdnimg.cn/img_convert/c5744b6d4ae666a7d9731f0c92b86c64.png)
webfiy 是一个非常基础的 CGI 服务,所有的请求都会路由到这个 CGI 脚本上。最初的设计目标是希望能够尽可能的做到零配置。webify 通过调用需要封装的命令行脚本,然后将请求的 body 传入标准输入 stdin。然后标准输出 stdout 像 HTTP 响应一样回传到 client 调用方。过程中如果封装的脚本返回了非 0 的结果,则 HTTP 请求会返回 500。
其实现在有不少的 serverless 的框架也是使用类似的机制来处理服务之间的交互。对于使用者来说只需要关注其自身的逻辑,其他的都交给框架和基础设施来处理。
整体使用上比较简单,我们来看一个 Python 的例子。
1、首先假设我们有一个路径查找的函数,如下:
![cc2df3b99ec67cdabbdeb32c32e1080e.png](https://img-blog.csdnimg.cn/img_convert/cc2df3b99ec67cdabbdeb32c32e1080e.png)
2、连接 stdin 和 stdout
![5f8d698a15bf877db232f2bc76d54528.png](https://img-blog.csdnimg.cn/img_convert/5f8d698a15bf877db232f2bc76d54528.png)
3、本地 shell 测试
![3b451fbfd0deb992c4811b110a5e716e.png](https://img-blog.csdnimg.cn/img_convert/3b451fbfd0deb992c4811b110a5e716e.png)
4、通过 webify 转化为 Web 服务
![48c9d0da8928cdb61e93e65876220930.png](https://img-blog.csdnimg.cn/img_convert/48c9d0da8928cdb61e93e65876220930.png)
更多项目详情请查看如下链接。
开源项目地址:beefsack/webify
最后,照旧安利一波我们的公众号:「GitHub 精选」,目前每天都会推荐一篇优质的开源项目文章,主要分享比较实用或有趣的开发工具与开源项目。我们的目标是:挖掘开源的价值。这个公众号超级值得大家关注。