Meta,到底为何物?其实就是我想用 Go 来写项目,不仅仅是重构魔方,后续新的项目应该也会基于这个框架。也有很多优秀的框架了,但是跟个人习惯还是有点差异,于是根据自己的需求把需要的功能加到 Web 框架里,就有了 Meta。
-
遵循 RESTful API 设计规范。
-
基于Go FiberWeb 框架,中间件 丰富:Cache、CORS、CSRF、Limiter、Logger、RequestID 等。
-
基于Casbin 的 RBAC 访问控制模型。
-
gofiber 日志中间件 记录 web 日志,uber zap记录程序日志,支持日志轮转。
-
swagger api自动生成 swagger 文档。
-
基于Entgo的数据库存储,支持多种数据库后端 :MySQL、MariaDB、PostgreSQL、CockroachDB (preview)、SQLite、Gremlin、TiDB (preview);支持表自动创建及删除。
-
基于google Wire的依赖注入。
-
gg go 代码生成,自动生成 Api、Api 自动化测试案例(自动生成对象数据)、Controller、Service、Request 扩展参数;自动生成增删改查、批量创建、批量删除、任意字段搜索代码。
-
扩展 Entgo 模板:增加各个实体的 Query、QuerySearch(任意字段搜索)、Create 的 SetEntity、UpdateOne 的 SetEntity 功能。
-
基于 Entgo filter 的多租户实现。
-
基于 httptest 和 fiber.Test 的单元测试,可对通用的方法实现自动化 Api 测试。
-
基于airgo 程序热重启,可在开发中热重启。
-
基于gocron的定时任务。
涉及组件/框架
Go Fiber:Web 框架、Entgo:ORM、viper:配置文件、Casbin :RABC、JWT、uber zap 日志记录、lumberjack 日志轮转、google Wire:依赖注入、gg:go 代码生成、swagger api、air:go 程序热重启、gocron定时任务。
用法步骤【建议参考 meta wiki】
-
ent 创建模块,ent 同目录执行(app 目录执行)
go run entgo.io/ent/cmd/ent new <moduleName>
-
根据实际修改
app/ent/schema
,字段、关系、Mixin 等,参考 -
生成代码,ent 同目录执行(app 目录执行)
go generate ./ent
,没有报错即正常运行如果提示没有 entgo,则需要安装
go install entgo.io/ent/cmd/ent@latest
如果有报错,则可能需要删除 ent 目录下 extend_*.go 文件
如果时间参数报错,则需要复制
data/query_param.go
到app/ent/extend
,再go generate ./ent
-
之后在项目根目录
air
运行即可
- 需要对 entgo 有一定了解
- 权限管理需要了解 casbin
- 依赖注入,可以参考已有的代码