无需编写代码即可生成完整的Web服务项目代码(gin框架),低代码也能玩转服务端开发 - Golang实战
无需编写代码即可生成完整的Web服务项目代码(gin框架),低代码也能玩转服务端开发 - Golang实战
介绍一款新的代码生成工具 sponge,它无缝结合了生成的CRUD接口代码与生成的web服务代码(无需添加或修改任何代码),并包含了分页条件查询、缓存等功能。
github: GitHub - zhufuyi/sponge: sponge 是一个强大的代码生成工具,一个基于 gin 和 gRPC 的微服务框架。
安装 sponge 后,通过执行以下命令打开 UI
sponge run

web 服务代码主要由 gin、gorm、go-redis 等常用库组成。它还包含了 swagger 文档、测试代码、常见服务治理功能的代码、构建部署脚本等。
切换到 web 目录并执行命令:
# 生成 swagger 文档
make docs
# 编译并启动 web 服务
make run
在浏览器中打开 localhost:8080/swagger/index.html,即可对表进行增、删、改、查操作。
更多关于无需编写代码即可生成完整的Web服务项目代码(gin框架),低代码也能玩转服务端开发 - Golang实战的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于无需编写代码即可生成完整的Web服务项目代码(gin框架),低代码也能玩转服务端开发 - Golang实战的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Sponge 确实是一个强大的 Go 语言代码生成工具,它极大地简化了基于 Gin 框架的 Web 服务开发流程。通过 sponge,开发者可以快速生成包含完整 CRUD 接口、分页查询、缓存集成(如 go-redis)以及 Swagger 文档的生产级项目代码,无需手动编写基础代码。
以下是一个典型的使用示例,展示如何通过 sponge 生成一个完整的用户管理 Web 服务:
- 首先,安装 sponge 并启动 UI 界面(如你所述):
# 安装 sponge
go install github.com/zhufuyi/sponge/cmd/sponge@latest
# 启动 UI 界面
sponge run
-
在 UI 界面中,选择生成 Web 服务代码。例如,配置一个用户表(user)的 CRUD 接口,包括字段如
id、name、email。sponge 会自动生成以下关键代码文件:internal/model/user.go:GORM 模型定义。internal/cache/user.go:Redis 缓存逻辑。internal/dao/user.go:数据访问层(DAO)。internal/handler/user.go:Gin 路由和处理函数。internal/service/user.go:业务逻辑层。
-
生成的 handler 代码示例(自动包含分页查询和缓存):
// internal/handler/user.go
package handler
import (
"net/http"
"github.com/gin-gonic/gin"
"your_project/internal/service"
)
type userHandler struct {
userService service.UserService
}
func NewUserHandler() *userHandler {
return &userHandler{
userService: service.NewUserService(),
}
}
// GetUserByID 处理获取用户详情的请求
func (h *userHandler) GetUserByID(c *gin.Context) {
id := c.Param("id")
user, err := h.userService.GetByID(c.Request.Context(), id)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, user)
}
// ListUsers 处理分页列表查询
func (h *userHandler) ListUsers(c *gin.Context) {
page := c.DefaultQuery("page", "1")
size := c.DefaultQuery("size", "10")
users, total, err := h.userService.List(c.Request.Context(), page, size)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"data": users, "total": total})
}
- 生成后,切换到项目目录并启动服务:
# 生成 Swagger 文档
make docs
# 编译并运行 Web 服务
make run
- 访问 Swagger 界面(
localhost:8080/swagger/index.html)进行测试,可以直接对 user 表执行增删改查操作。sponge 自动生成的代码已集成 Gin 路由、GORM 数据库操作、go-redis 缓存以及请求验证,无需额外修改。
这个工具显著降低了 Go Web 服务的开发门槛,特别适合快速构建原型或标准化微服务。通过 sponge,开发者能专注于业务逻辑而非重复的样板代码,提升开发效率。

