Golang学习日志 ━━ Gin-Vue-Admin按步骤手动创建api及router、service
gin-vue-admin是一套国人用golang开发的后台管理系统,最新版本的系统工具中已经自带
自动化package
功能,本文记录的是手动创建过程。
官网:https://www.gin-vue-admin.com/
学习视频:https://www.bilibili.com/video/BV1kv4y1g7nT/?p=6
准备工作
在server/api/v1
、server/router
、server/service
目录下创建自己的文件夹及文件。
本例目录及文件命名都为myTest/enter.go
和myTest/my_test1.go
,包名都为myTestPkg
。
功能服务
server/service/myTest/enter.go
package myTestPkgtype ServiceGroup struct {MyTest1Service
}
server/service/myTest/my_test1.go
package myTestPkgimport ("fmt"
)type MyTest1Service struct {}func (s *MyTest1Service) CreateService() {fmt.Print("这里仅执行打印")
}
server/service/enter.go
package serviceimport ("github.com/flipped-aurora/gin-vue-admin/server/service/example""github.com/flipped-aurora/gin-vue-admin/server/service/myTest""github.com/flipped-aurora/gin-vue-admin/server/service/system"
)type ServiceGroup struct {SystemServiceGroup system.ServiceGroupExampleServiceGroup example.ServiceGroupMyTestServiceGroup myTestPkg.ServiceGroup
}var ServiceGroupApp = new(ServiceGroup)
API
server/api/v1/myTest/enter.go
package myTestPkgimport ("github.com/flipped-aurora/gin-vue-admin/server/service"
)type ApiGroup struct {MyTest1Api
}var (myTestService = service.ServiceGroupApp.MyTestServiceGroup.MyTest1Service
)
server/api/v1/myTest/my_test1.go
package myTestPkgimport ("github.com/flipped-aurora/gin-vue-admin/server/model/common/response""github.com/gin-gonic/gin"
)type MyTest1Api struct {}func (m *MyTest1Api) CreateApi(c *gin.Context) {myTestService.CreateService()response.Ok(c)
}
server/api/v1/enter.go
package v1import ("github.com/flipped-aurora/gin-vue-admin/server/api/v1/example""github.com/flipped-aurora/gin-vue-admin/server/api/v1/myTest""github.com/flipped-aurora/gin-vue-admin/server/api/v1/system"
)type ApiGroup struct {SystemApiGroup system.ApiGroupExampleApiGroup example.ApiGroupMyTestApiGroup myTestPkg.ApiGroup
}var ApiGroupApp = new(ApiGroup)
路由
server/router/myTest/enter.go
package myTestPkgtype RouterGroup struct {MyTest1Router
}
server/router/myTest/my_test1.go
package myTestPkgimport ("github.com/flipped-aurora/gin-vue-admin/server/api/v1""github.com/flipped-aurora/gin-vue-admin/server/middleware""github.com/gin-gonic/gin"
)type MyTest1Router struct {}// InitMyTest1Router 初始化 MyTest1 路由信息
func (s *MyTest1Router) InitMyTest1Router(Router *gin.RouterGroup) {myTest1Router := Router.Group("myTest1").Use(middleware.OperationRecord())var myTest1Api = v1.ApiGroupApp.MyTestApiGroup.MyTest1Api{myTest1Router.POST("createMyTest1Api", myTest1Api.CreateApi)}
}
server/router/enter.go
package routerimport ("github.com/flipped-aurora/gin-vue-admin/server/router/example""github.com/flipped-aurora/gin-vue-admin/server/router/myTest""github.com/flipped-aurora/gin-vue-admin/server/router/system"
)type RouterGroup struct {System system.RouterGroupExample example.RouterGroupMyTestRouterGroup myTestPkg.RouterGroup
}var RouterGroupApp = new(RouterGroup)
初始化
server/initialize/router.go
package initializeimport ("net/http"_ "github.com/flipped-aurora/gin-vue-admin/server/docs""github.com/flipped-aurora/gin-vue-admin/server/global""github.com/flipped-aurora/gin-vue-admin/server/middleware""github.com/flipped-aurora/gin-vue-admin/server/router""github.com/gin-gonic/gin""github.com/swaggo/gin-swagger""github.com/swaggo/gin-swagger/swaggerFiles"
)// 初始化总路由func Routers() *gin.Engine {Router := gin.Default()myTestRouter := router.RouterGroupApp.MyTestRouterGroupsystemRouter := router.RouterGroupApp.SystemexampleRouter := router.RouterGroupApp.ExampleRouter.StaticFS(global.GVA_CONFIG.Local.Path, http.Dir(global.GVA_CONFIG.Local.StorePath)) // 为用户头像和文件提供静态地址Router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))global.GVA_LOG.Info("register swagger handler")// 方便统一添加路由组前缀 多服务器上线使用PublicGroup := Router.Group(""){// 健康监测PublicGroup.GET("/health", func(c *gin.Context) {c.JSON(200, "ok")})}{systemRouter.InitBaseRouter(PublicGroup) // 注册基础功能路由 不做鉴权systemRouter.InitInitRouter(PublicGroup) // 自动初始化相关}PrivateGroup := Router.Group("")PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()){systemRouter.InitApiRouter(PrivateGroup) // 注册功能api路由systemRouter.InitJwtRouter(PrivateGroup) // jwt相关路由systemRouter.InitUserRouter(PrivateGroup) // 注册用户路由systemRouter.InitMenuRouter(PrivateGroup) // 注册menu路由systemRouter.InitSystemRouter(PrivateGroup) // system相关路由systemRouter.InitCasbinRouter(PrivateGroup) // 权限相关路由systemRouter.InitAutoCodeRouter(PrivateGroup) // 创建自动化代码systemRouter.InitAuthorityRouter(PrivateGroup) // 注册角色路由systemRouter.InitSysDictionaryRouter(PrivateGroup) // 字典管理systemRouter.InitAutoCodeHistoryRouter(PrivateGroup) // 自动化代码历史systemRouter.InitSysOperationRecordRouter(PrivateGroup) // 操作记录systemRouter.InitSysDictionaryDetailRouter(PrivateGroup) // 字典详情管理systemRouter.InitAuthorityBtnRouterRouter(PrivateGroup) // 字典详情管理exampleRouter.InitExcelRouter(PrivateGroup) // 表格导入导出exampleRouter.InitCustomerRouter(PrivateGroup) // 客户路由exampleRouter.InitFileUploadAndDownloadRouter(PrivateGroup) // 文件上传下载功能路由myTestRouter.InitMyTest1Router(PrivateGroup)}InstallPlugin(Router) // 安装插件global.GVA_LOG.Info("router register success")return Router
}
总结
代码要求还是很统一的,创建同样的目录文件,放在同一个包下,告诉enter.go有几个组(本文就一个,都是开头用MyTest1
命名,比如MyTest1Api
),先创建service,再给api调用,然后给router调用,最后initialize初始化路由。
go build main.go
生成执行文件打开后,如图,表示api接口已经对外发布。
Golang学习日志 ━━ Gin-Vue-Admin按步骤手动创建api及router、service相关推荐
- Golang学习日志 ━━ LiteIDE的主要配置
用LiteIDE开发golang半年换到VSCode,vs用了一年多后,最近又用回LiteIDE,感觉还是针对性强的IDE用起来舒适,界面什么不重要. 我个人一般什么东西都喜欢用默认配置,能不改的就不 ...
- Golang学习日志 ━━ gin-vue-admin实现多数据库db-list
gin-vue-admin是一套国人用golang开发的后台管理系统,值得推荐给大家,其前端使用element-ui,后端使用gin框架. 官网:https://www.gin-vue-admin.c ...
- Golang学习日志 ━━ (批量)循环生成随机数出现重复的解决办法
利用纳秒作为种子,每次生成随机数都给一次种子. import ("math/rand""time" )const char = "abcdefghij ...
- Java多线程学习六:使用线程池比手动创建线程好在那里以及常用线程池参数的意义
为什么要使用线程池 首先,回顾线程池的相关知识,在 Java 诞生之初是没有线程池的概念的,而是先有线程,随着线程数的不断增加,人们发现需要一个专门的类来管理它们,于是才诞生了线程池.没有线程池的时候 ...
- Python学习日志08 - 字典
Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 Python学习日志08课 - 字典 前言 进入正题 创 ...
- 三、Vue组件化开发学习笔记——组件化的基本步骤、全局组件和局部组件、父组件和子组件、注册组件的语法糖、模板分离写法、组件的数据存放
一.什么是组件化? 人面对复杂问题的处理方式: 任何一个人处理信息的逻辑能力都是有限的 所以,当面对一个非常复杂的问题时,我们不太可能一次性搞定一大堆的内容. 但是,我们人有一种天生的能力,就是将问题 ...
- 前端学习日志(Vue)
文章目录 模板语法 插值语法 指令语法 数据绑定 MVVM模型 数据代理 事件处理 计算属性 监视属性 进行监听 深度监视 条件渲染 列表渲染 1.基本列表 列表过滤 列表排序 生命周期 Vue组件的 ...
- Go实战Gin+Vue+微服务打造秒杀商城第五课 gin+vue实战
gin+vue实战 后端: 用户管理 用户列表 登录/登出 商品管理 商品的增上改查 活动管理 商品关联 成功率 redis队列,不成功的回到队列继续,成功的从队列删除 结束难点: 代码和部署完全隔离 ...
- 一顿烤羊腿换来的Golang学习路线
作者:阿秀 阿秀的求职笔记:https://interviewguide.cn 你好,我是阿秀. 这篇学习路线写完其实很久了,不过前段时间又请组内的Go后端资深研发工程师吃了一顿烤羊腿. 向他请教了一 ...
- golang学习笔记(基础篇)
LCY~~Golang学习笔记 一.Go语言开发环境 ##安装Go开发包以及VsCode Go开发包与vscode配置安装教程网址:https://www.liwenzhou.com/posts/Go ...
最新文章
- c语言整形提升规则,C语言进阶:整型提升
- python函数注释 参数 省略号_python – make函数在help()函数中有参数的省略号
- 从近年CVPR看域自适应立体匹配
- qemu 对虚机的地址空间管理
- 各种数据结构性能的比较
- java毫秒 mysql秒_MySQL和Java时间毫秒之间的转换问题的总结
- 如何利用 AVFoundation 设计一个通用稳定的音视频框架?
- yii2 html编辑器,浅析Yii2集成富文本编辑器redactor实例教程
- 导入es数据_有道精品课实时数据中台建设实践
- 佳能g3800编程器固件_佳能g3800清零软件 佳能g3800打印机废墨清零
- 高德地图的测试key_获取高德地图key
- 计算机无法搜索文件夹内容,系统我的电脑中文件夹和搜索选项无法使用的解决方法...
- 台式计算机的内存容量,内存容量
- 如何在期货与现货市场之间套利?
- LaTeX中的保留字符(反斜杠)和特殊符号(角度、摄氏度)怎么表示?
- Android 自定义dialog 设置宽度的问题
- 实验十六:电位器传感器实验
- C语言 day07 基础知识学习
- Home Assistant 开发指南
- 为什么无法运行谷歌play_什么是Google Play积分,以及如何使用它们?