# README
AutoCrudGo
一个简单而强大的 Go 语言 CRUD API 生成器,基于 Gin 和 Gom。
特性
- 基于结构体标签自动映射数据库字段
- 支持自定义路由前缀
- 支持字段过滤(查询、更新、创建)
- 支持字段排除
- 支持分页查询
- 支持条件过滤
- 支持排序
- 支持自定义主键
安装
go get github.com/kmlixh/crud
快速开始
- 定义模型:
type User struct {
Id int64 `json:"id" gom:"id,primary,auto_increment"`
Username string `json:"username" gom:"username"`
Password string `json:"-" gom:"password"`
Email string `json:"email" gom:"email"`
Status int `json:"status" gom:"status"`
CreatedAt time.Time `json:"createdAt" gom:"created_at"`
UpdatedAt time.Time `json:"updatedAt" gom:"updated_at"`
}
- 注册路由:
// 初始化数据库
db, _ := gom.Open("mysql", "user:pass@tcp(host:port)/dbname?charset=utf8mb4")
// 初始化 Gin
engine := gin.Default()
// 注册 CRUD 路由
crud.Register(engine, db, User{}, crud.Options{
PathPrefix: "/api/users",
QueryFields: []string{"id", "username", "email", "status"},
UpdateFields: []string{"username", "email", "status"},
CreateFields: []string{"username", "password", "email", "status"},
ExcludeFields: []string{"password"},
})
// 启动服务器
engine.Run(":8080")
API 说明
列表查询
GET /api/users?pageNum=1&pageSize=10
支持的查询参数:
pageNum
: 页码(默认 1)pageSize
: 每页大小(默认 10)orderBy
: 排序字段,多个字段用逗号分隔,前缀-
表示降序- 字段查询:直接使用字段名作为参数
- 模糊查询:字段名加后缀
_like
- 范围查询:字段名加后缀
_gt
、_gte
、_lt
、_lte
获取单条记录
GET /api/users/:id
创建记录
POST /api/users
Content-Type: application/json
{
"username": "test",
"password": "123456",
"email": "[email protected]",
"status": 1
}
更新记录
PUT /api/users/:id
Content-Type: application/json
{
"username": "new_name",
"email": "[email protected]",
"status": 1
}
删除记录
DELETE /api/users/:id
配置选项
type Options struct {
// 路由前缀
PathPrefix string
// 主键字段(默认为 "id")
PrimaryKey string
// 可查询字段(为空表示所有字段)
QueryFields []string
// 可更新字段(为空表示所有字段)
UpdateFields []string
// 可创建字段(为空表示所有字段)
CreateFields []string
// 排除字段
ExcludeFields []string
}
响应格式
成功响应
{
"code": 0,
"data": {
// 响应数据
}
}
分页响应
{
"code": 0,
"data": {
"pageNum": 1,
"pageSize": 10,
"total": 100,
"totalPages": 10,
"data": [
// 数据列表
]
}
}
错误响应
{
"code": 500,
"message": "错误信息"
}
完整示例
查看 example 目录获取完整的示例代码。
许可证
MIT License
# Packages
No description provided by the author
# Functions
CodeMsgFunc 返回自定义响应.
Cors 跨域中间件.
GenerateToken 生成新的Token.
Json 直接返回对象.
JsonErr 返回错误响应.
JsonOk 返回成功响应.
New 创建新的Crud实例.
NewRedisTokenStore 创建Redis Token存储.
# Constants
服务器错误.
请求无效.
成功.
删除.
列表.
错误.
成功.
分页.
保存.
详情.
更新.
# Structs
CodeMsg 统一响应结构.
Crud 自动CRUD处理器.
ItemHandler 自定义处理器.
RedisTokenStore Redis实现的Token存储.
TokenDetail Token详情.
# Interfaces
TokenStore Token存储接口.
# Type aliases
QueryCondFunc 查询条件函数.