Skip to content
/ meta Public

Meta,到底为何物?其实就是我想用 Go 来写项目,不仅仅是重构魔方,后续新的项目应该也会基于这个框架。也有很多优秀的框架了,但是跟个人习惯还是有点差异,于是根据自己的需求把需要的功能加到 Web 框架里,就有了 Meta。

Notifications You must be signed in to change notification settings

one-meta/meta

Repository files navigation

Meta

为什么会有这个项目

Meta,到底为何物?其实就是我想用 Go 来写项目,不仅仅是重构魔方,后续新的项目应该也会基于这个框架。也有很多优秀的框架了,但是跟个人习惯还是有点差异,于是根据自己的需求把需要的功能加到 Web 框架里,就有了 Meta。

功能特性

  1. 遵循 RESTful API 设计规范。

  2. 基于Go FiberWeb 框架,中间件 丰富:Cache、CORS、CSRF、Limiter、Logger、RequestID 等。

  3. 基于Casbin 的 RBAC 访问控制模型。

  4. gofiber 日志中间件 记录 web 日志,uber zap记录程序日志,支持日志轮转。

  5. 基于JWT认证,用户密码使用bcrypt加密。

  6. swagger api自动生成 swagger 文档。

  7. 基于Entgo的数据库存储,支持多种数据库后端 :MySQL、MariaDB、PostgreSQL、CockroachDB (preview)、SQLite、Gremlin、TiDB (preview);支持表自动创建及删除。

  8. 基于google Wire的依赖注入。

  9. gg go 代码生成,自动生成 Api、Api 自动化测试案例(自动生成对象数据)、Controller、Service、Request 扩展参数;自动生成增删改查、批量创建、批量删除、任意字段搜索代码。

  10. 扩展 Entgo 模板:增加各个实体的 Query、QuerySearch(任意字段搜索)、Create 的 SetEntity、UpdateOne 的 SetEntity 功能。

  11. 基于 Entgo filter 的多租户实现。

  12. 基于 httptest 和 fiber.Test 的单元测试,可对通用的方法实现自动化 Api 测试。

  13. 基于airgo 程序热重启,可在开发中热重启。

  14. 基于gocron的定时任务。

涉及组件/框架

Go Fiber:Web 框架、Entgo:ORM、viper:配置文件、Casbin :RABC、JWTuber zap 日志记录lumberjack 日志轮转google Wire:依赖注入、gg:go 代码生成、swagger apiair:go 程序热重启、gocron定时任务。

用法步骤【建议参考 meta wiki

  1. ent 创建模块,ent 同目录执行(app 目录执行) go run entgo.io/ent/cmd/ent new <moduleName>

  2. 根据实际修改app/ent/schema,字段、关系、Mixin 等,参考

  3. 生成代码,ent 同目录执行(app 目录执行) go generate ./ent,没有报错即正常运行

    如果提示没有 entgo,则需要安装go install entgo.io/ent/cmd/ent@latest

    如果有报错,则可能需要删除 ent 目录下 extend_*.go 文件

    如果时间参数报错,则需要复制data/query_param.goapp/ent/extend,再go generate ./ent

  4. 之后在项目根目录air运行即可

更多信息

  1. 需要对 entgo 有一定了解
  2. 权限管理需要了解 casbin
  3. 依赖注入,可以参考已有的代码

About

Meta,到底为何物?其实就是我想用 Go 来写项目,不仅仅是重构魔方,后续新的项目应该也会基于这个框架。也有很多优秀的框架了,但是跟个人习惯还是有点差异,于是根据自己的需求把需要的功能加到 Web 框架里,就有了 Meta。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published