Golang清洁架构生成器
Golang清洁架构生成器 大家好,我想向大家介绍 Gojira,这是我一直在开发的一个项目。
它是一个整洁架构项目生成器,包含自动生成模块的功能,涉及项目文件夹结构、Gin-Gonic、Bcrypt、JWT 以及 CRUD 示例。
功能特性
- 整洁架构文件夹结构
- Gin Gonic
- JWT
- Bcrypt
- 自动生成包含 CRUD 示例的模块
- 自动生成数据库服务客户端
- Mysql
- Gorm
- Prisma
- 示例任务 API
GitHub - saturnavt/gojira: Gojira 是一个用于创建整洁架构应用程序的 CLI 工具,包含 Gin-Gonic、Bcrypt 和 JWT。
Gojira 是一个 CLI 工具,用于为您创建包含 Gin-Gonic、Bcrypt 和 JWT 的整洁架构应用程序。 - GitHub - saturnavt/gojira: Gojira 是一个 CLI 工具,用于为您创建包含 Gin-Gonic、Bcrypt 和 JWT 的整洁架构应用程序…
更多关于Golang清洁架构生成器的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
Gojira 是一个实用的 Go 语言整洁架构项目生成器,它通过 CLI 工具快速搭建基于 Gin-Gonic 的 Web 应用程序框架。以下是一个使用 Gojira 生成项目并创建模块的示例:
# 安装 Gojira
go install github.com/saturnavt/gojira@latest
# 生成新项目
gojira new myapp
# 进入项目目录
cd myapp
# 生成用户模块(包含 CRUD 示例)
gojira generate module user
生成的用户模块会遵循整洁架构的分层结构:
myapp/
├── internal/
│ ├── domain/
│ │ └── user.go
│ ├── repository/
│ │ └── user_repository.go
│ ├── usecase/
│ │ └── user_usecase.go
│ └── delivery/
│ └── http/
│ └── user_handler.go
├── pkg/
│ ├── database/
│ │ └── mysql.go
│ └── jwt/
│ └── auth.go
└── cmd/
└── main.go
生成的用户处理器示例代码:
// internal/delivery/http/user_handler.go
package http
import (
"net/http"
"github.com/gin-gonic/gin"
"myapp/internal/usecase"
)
type UserHandler struct {
userUsecase usecase.UserUsecase
}
func NewUserHandler(u usecase.UserUsecase) *UserHandler {
return &UserHandler{userUsecase: u}
}
func (h *UserHandler) CreateUser(c *gin.Context) {
var req CreateUserRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
user, err := h.userUsecase.Create(c.Request.Context(), req.ToEntity())
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusCreated, user)
}
func (h *UserHandler) GetUser(c *gin.Context) {
id := c.Param("id")
user, err := h.userUsecase.GetByID(c.Request.Context(), id)
if err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "user not found"})
return
}
c.JSON(http.StatusOK, user)
}
数据库配置自动生成:
// pkg/database/mysql.go
package database
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func NewMySQL(dsn string) (*gorm.DB, error) {
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
return nil, err
}
// 自动迁移
err = db.AutoMigrate(&User{})
if err != nil {
return nil, err
}
return db, nil
}
JWT 认证中间件:
// pkg/jwt/auth.go
package jwt
import (
"github.com/gin-gonic/gin"
"github.com/golang-jwt/jwt/v4"
)
func AuthMiddleware(secret string) gin.HandlerFunc {
return func(c *gin.Context) {
tokenString := c.GetHeader("Authorization")
if tokenString == "" {
c.AbortWithStatusJSON(401, gin.H{"error": "authorization header required"})
return
}
token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
return []byte(secret), nil
})
if err != nil || !token.Valid {
c.AbortWithStatusJSON(401, gin.H{"error": "invalid token"})
return
}
c.Set("user", token.Claims)
c.Next()
}
}
Gojira 通过预置的模板和生成器,减少了搭建整洁架构项目的重复工作,使开发者能够快速开始业务逻辑开发。

