Golang框架Gomarvin:快速生成自定义REST服务器模板(支持Gin/Fiber/Echo)

Golang框架Gomarvin:快速生成自定义REST服务器模板(支持Gin/Fiber/Echo) GitHub

GitHub - tompston/gomarvin: 为 Go REST 服务器生成样板代码。

为 Go REST 服务器生成样板代码。通过在 GitHub 上创建帐户来为 tompston/gomarvin 的开发做出贡献。

1 回复

更多关于Golang框架Gomarvin:快速生成自定义REST服务器模板(支持Gin/Fiber/Echo)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Gomarvin是一个优秀的Go语言代码生成工具,专门用于快速创建自定义REST API服务器模板。它支持主流的Web框架包括Gin、Fiber和Echo,通过配置文件驱动的方式自动生成完整的项目结构。

核心特性

  1. 多框架支持:一键生成Gin、Fiber或Echo框架的服务器模板
  2. 配置文件驱动:使用JSON/YAML定义API端点、模型和路由
  3. 数据库集成:自动生成数据库模型和CRUD操作
  4. 中间件支持:内置认证、日志、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语言最佳实践,且易于扩展和维护。

回到顶部