Golang框架Gomarvin:快速生成自定义REST服务器模板(支持Gin/Fiber/Echo)
Golang框架Gomarvin:快速生成自定义REST服务器模板(支持Gin/Fiber/Echo)
GitHub - tompston/gomarvin: 为 Go REST 服务器生成样板代码。
为 Go REST 服务器生成样板代码。通过在 GitHub 上创建帐户来为 tompston/gomarvin 的开发做出贡献。
更多关于Golang框架Gomarvin:快速生成自定义REST服务器模板(支持Gin/Fiber/Echo)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Gomarvin是一个优秀的Go语言代码生成工具,专门用于快速创建自定义REST API服务器模板。它支持主流的Web框架包括Gin、Fiber和Echo,通过配置文件驱动的方式自动生成完整的项目结构。
核心特性
- 多框架支持:一键生成Gin、Fiber或Echo框架的服务器模板
- 配置文件驱动:使用JSON/YAML定义API端点、模型和路由
- 数据库集成:自动生成数据库模型和CRUD操作
- 中间件支持:内置认证、日志、CORS等常用中间件
基本使用示例
首先安装Gomarvin:
go install github.com/tompston/gomarvin@latest
创建配置文件 gomarvin.json:
{
"project_name": "myapi",
"framework": "gin",
"server": {
"port": 8080
},
"endpoints": [
{
"name": "GetUsers",
"method": "GET",
"path": "/users",
"handler": "GetUsersHandler"
},
{
"name": "CreateUser",
"method": "POST",
"path": "/users",
"handler": "CreateUserHandler"
}
]
}
生成项目代码:
gomarvin generate -c gomarvin.json
生成的代码结构
执行后会生成完整的项目结构:
myapi/
├── cmd/
│ └── server/
│ └── main.go
├── internal/
│ ├── handlers/
│ │ └── user_handler.go
│ ├── models/
│ │ └── user.go
│ └── routes/
│ └── routes.go
├── pkg/
│ └── database/
│ └── database.go
└── go.mod
生成的Handler示例
对于Gin框架,Gomarvin会生成类似这样的handler:
// internal/handlers/user_handler.go
package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
)
func GetUsersHandler(c *gin.Context) {
// 自动生成的业务逻辑占位符
// TODO: 实现获取用户列表逻辑
c.JSON(http.StatusOK, gin.H{
"message": "GetUsers endpoint",
"data": []string{},
})
}
func CreateUserHandler(c *gin.Context) {
var user struct {
Name string `json:"name" binding:"required"`
Email string `json:"email" binding:"required,email"`
}
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
// TODO: 实现用户创建逻辑
c.JSON(http.StatusCreated, gin.H{
"message": "User created successfully",
"data": user,
})
}
路由配置
自动生成的路由文件:
// internal/routes/routes.go
package routes
import (
"github.com/gin-gonic/gin"
"myapi/internal/handlers"
)
func SetupRouter() *gin.Engine {
router := gin.Default()
// 用户相关路由
userRoutes := router.Group("/users")
{
userRoutes.GET("", handlers.GetUsersHandler)
userRoutes.POST("", handlers.CreateUserHandler)
}
return router
}
支持数据库模型生成
Gomarvin还支持数据库模型生成,配置示例:
{
"database": {
"type": "postgres",
"models": [
{
"name": "User",
"fields": [
{"name": "ID", "type": "uint", "gorm": "primaryKey"},
{"name": "Name", "type": "string", "gorm": "not null"},
{"name": "Email", "type": "string", "gorm": "uniqueIndex"}
]
}
]
}
}
这会生成对应的GORM模型:
// internal/models/user.go
package models
import "gorm.io/gorm"
type User struct {
gorm.Model
Name string `gorm:"not null"`
Email string `gorm:"uniqueIndex"`
}
框架切换
只需修改配置文件中的framework字段即可切换框架:
{
"framework": "fiber", // 或 "echo", "gin"
"server": {
"port": 3000
}
}
Gomarvin会根据选择的框架生成相应的中间件配置、错误处理和路由结构。
这个工具特别适合需要快速启动REST API项目的场景,通过减少重复的样板代码编写,让开发者能更专注于业务逻辑实现。生成的代码结构清晰,符合Go语言最佳实践,且易于扩展和维护。

