greasyx 基于Go+Gin的Web项目脚手架,按模块自定义加载,可灵活快速搭建你的个性化Web项目框架 greasyx

soryetong • 3416 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
## 介绍 - 它只是我为了快速构建自己的项目而创建的,让我不必在每新建一个新项目都复制这些代码 - 它只是把日常工作中常用的工具和第三方包进行了整合,没有什么高深的技术,也不会有任何的性能影响 - 在项目中, 把常用的MySQL、HTTP、Redis、MongoDB等以模块化的方式按需加载 - 目前 main 分支一直在更新,后续功能完善后,将会提供精简版本的 ## 当前go版本 - go 1.24 ## 使用 它只需要简单的几步就可以快速创建一个项目 1. 初始化你的项目文件夹 ```bash go mod init your_project_name cd your_project_name ``` 2. 拉取 `greasyx` ```bash go get -u github.com/soryetong/greasyx ``` 3. 创建 `main.go` ```go package main import ( "github.com/soryetong/greasyx/gina" ) func main() { gina.Run() } ``` 4. 创建你的api文件 ```bash mkdir api_desc touch api_desc/test1.go ``` ```api # test1.go # 这个最终会生成对应的结构体,内容和Gin的保持一致 # 比如GET请求就需要`form`, 需要参数校验就使用 `binding` type TestReq { Page int64 `json:"page" form:"page"` PageSize int64 `json:"pageSize" form:"pageSize"` } type TestResp { Name string `json:"name"` } # 必须以 service 打头,会生成对应的接口、方法 # SystemTest 可以理解成一个模块 # Group Auth 表示这个模块属于哪个 Group service SystemTest Group Auth { # get 表示请求类型,支持get、post、put、delete, returns前表示请求参数, returns后表示返回参数 get test1 (TestReq) returns (TestResp) post test2 returns } ``` **Group 是指这个模块所属的组,目前支持 `Public`、`Auth`、`Token`** > 它会将路由分成不同的组,从而让不同的组使用不同的中间件 `Public`:不使用任何中间件 `Auth`:使用 `Casbin` 权限校验和 `Jwt` token中间件,适用于管理后台 `Token`:使用 `Jwt` token中间件 生成的路由代码如下: ```go publicGroup := r.Group("/api/v1") { // 健康监测 publicGroup.GET("/health", func(c *gin.Context) { c.JSON(200, "ok") }) // your_router } privateAuthGroup := r.Group("/api/v1") privateAuthGroup.Use(middleware.Casbin()).Use(middleware.Jwt()) { // your_router } privateTokenGroup := r.Group("/api/v1") privateTokenGroup.Use(middleware.Jwt()) { // your_router } ``` 📢注意:这一步不是必须的,只是有了api文件,就可以自动生成`Struct`、`Router`、`Handler`、`Logic` 5. 自动生成代码 ```bash # src表示api文件路径,output表示生成的代码路径 go run main.go autoc src=./api_desc output=./internal # 或者直接运行,按照指令输入 go run main.go autoc ``` 6. 加载Server和需要用到模块 ```go package main import ( _ "your_project_name/internal/server" "github.com/soryetong/greasyx/gina" _ "github.com/soryetong/greasyx/modules/casbinmodule" _ "github.com/soryetong/greasyx/modules/mysqlmodule" ) func main() { gina.Run() } ``` 解释: - `_ "your_project_name/internal/server"` 表示加载你的服务,这个是必须的, 除此之外, 其他的都是按需加载的 详见[内置模块](#已内置的模块) 7. 运行项目
授权协议:
开发语言:
Golang 查看源码»
3416 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传