sponge 是一个集成了自动生成代码、gin框架和一些常用流行库的生产力工具。sponge拥有丰富的生成代码命令,在UI界面上生成不同的功能代码可以组合成完整的服务(类似人为打散的海绵细胞可以自动重组成一个新的海绵)。代码解耦模块化设计,很容易构建出从开发到部署的完整工程项目,让你开发web服务项目轻而易举、事半功倍,使用go也可以"低代码开发"。
Github地址: https://github.com/zhufuyi/sponge
特点
- 使用简单:使用UI界面操作,简单易用。
- web框架:内置了 Gin 框架和常用的中间件(日志、request_id、jwt鉴权、限流、熔断、链路跟踪、指标采集等)
- 自动生成代码:根据sql或protobuf和参数生成不同功能代码,例如生成web服务代码、handler(CRUD)代码、dao(CRUD)代码、model代码、redis缓存代码等。
- 代码解耦可扩展:所有生成的代码都可以无缝衔接,不需要手动调整代码,支持自动合并新增模板代码,实现api接口"低代码开发"。
- 高可靠:服务代码解耦模块化设计,代码经过严格的测试,并遵循良好的编码规范。
- 高性能:在单台服务器中的实际业务中压测获取数据api接口轻松过万qps。
- 部署简单:支持一键部署到服务器、docker、k8s上。
优势
- 提高开发效率:通过生成代码来提高开发效率,省去大量手写代码的时间。
- 降低开发成本:集成了 gin 、gorm、go-redis 等流行库和生成代码功能,只需专注编写业务逻辑代码,可以快速开发高性能高可靠 web 服务,降低开发成本。
- 提高开发质量:开发项目简单化、标准化,生成的代码包括了测试用例。
功能
sponge包含丰富的组件(按需使用):
- Web 框架 gin
- 配置解析 viper
- 配置中心 nacos
- 日志 zap
- 数据库组件 gorm
- 缓存组件 go-redis, ristretto
- 自动化api接口文档 swagger, protoc-gen-openapiv2
- 鉴权 jwt
- 校验 validator
- 消息组件 rabbitmq
- 分布式事务管理器 dtm
- 自适应限流 ratelimit
- 自适应熔断 circuitbreaker
- 链路跟踪 opentelemetry
- 监控 prometheus, grafana
- 服务注册与发现 etcd, consul, nacos
- 自适应采集 profile
- 资源统计 gopsutil
- 代码质量检查 golangci-lint
- 持续集成部署 CICD jenkins, docker, kubernetes
目录结构
生成的服务代码目录结构遵循 project-layout,代码目录结构如下所示:
.
├── api # proto文件和生成的*pb.go目录
├── assets # 其他与资源库一起使用的资产(图片、logo等)目录
├── cmd # 程序入口目录
├── configs # 配置文件的目录
├── deployments # IaaS、PaaS、系统和容器协调部署的配置和模板目录
├── docs # 设计文档和界面文档目录
├── internal # 私有应用程序和库的代码目录
│ ├── cache # 基于业务包装的缓存目录
│ ├── config # Go结构的配置文件目录
│ ├── dao # 数据访问目录
│ ├── ecode # 自定义业务错误代码目录
│ ├── handler # http的业务功能实现目录
│ ├── model # 数据库模型目录
│ ├── routers # http路由目录
│ ├── rpcclient # 连接grpc服务的客户端目录
│ ├── server # 服务入口,包括http等
│ └── types # http的请求和响应类型目录
├── pkg # 外部应用程序可以使用的库目录
├── scripts # 用于执行各种构建、安装、分析等操作的脚本目录
├── test # 额外的外部测试程序和测试数据
└── third_party # 外部帮助程序、分叉代码和其他第三方工具
快速开始
安装sponge
支持在windows、mac、linux、docker环境下安装sponge,点击查看安装sponge说明。
打开生成代码界面
安装完成后,启动sponge UI服务:
sponge run
在本地浏览器访问 http://localhost:24631
,进入sponge的UI界面,点击左边菜单栏【SQL】–> 【创建web服务】,填写mysql dsn地址
,点击获取表名
,然后选择表名(可多选),接着填写其他参数,鼠标放在问号?
位置查看参数说明,填写完参数后,点击按钮下载代码
生成web服务完整项目代码,如下图所示:
解压代码,打开终端,切换到代码目录,执行命令:
# 生成swagger文档
make docs
# 编译和运行服务
make run
在浏览器打开 http://localhost:8080/swagger/index.html,在页面上进行增删改查、自定义条件分页查询的api接口测试,如下图所示:
就这样在UI界面生成代码和几行命令就完成了一个web后端服务,随着业务增加,需要添加更多mysql表的增删改查接口,在sponge的UI界面,点击左边菜单栏【Public】–> 【生成handler CRUD代码】,填写参数,然后点击按钮下载代码
。
解压代码,把internal
目录移动到web服务目录代码中,然后执行同样的命令:
# 生成swagger文档
make docs
# 编译和运行服务
make run
接着在浏览器打开 http://localhost:8080/swagger/index.html对新增的api接口进行测试。
sponge开发文档
更多使用sponge开发web项目的详情,点击查看sponge开发文档。
使用示例
视频教程
结语
sponge是一个帮助你轻松快速开发web应用的好帮手,通过自动生成代码减少人工编写大量代码,让开发者只需专注编写业务逻辑代码,甚至实现零代码开发,极大提高开发效率和降低开发项目周期。不少开发者使用sponge开发的web服务已在生产环境中稳定运行,如果你正在寻找高效率开发web服务框架,sponge是一个不错的选择。