gin-vue-admin是一套国人用golang开发的后台管理系统,最新版本的系统工具中已经自带自动化package功能,本文记录的是手动创建过程。
官网:https://www.gin-vue-admin.com/
学习视频:https://www.bilibili.com/video/BV1kv4y1g7nT/?p=6

准备工作

server/api/v1server/routerserver/service目录下创建自己的文件夹及文件。
本例目录及文件命名都为myTest/enter.gomyTest/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相关推荐

  1. Golang学习日志 ━━ LiteIDE的主要配置

    用LiteIDE开发golang半年换到VSCode,vs用了一年多后,最近又用回LiteIDE,感觉还是针对性强的IDE用起来舒适,界面什么不重要. 我个人一般什么东西都喜欢用默认配置,能不改的就不 ...

  2. Golang学习日志 ━━ gin-vue-admin实现多数据库db-list

    gin-vue-admin是一套国人用golang开发的后台管理系统,值得推荐给大家,其前端使用element-ui,后端使用gin框架. 官网:https://www.gin-vue-admin.c ...

  3. Golang学习日志 ━━ (批量)循环生成随机数出现重复的解决办法

    利用纳秒作为种子,每次生成随机数都给一次种子. import ("math/rand""time" )const char = "abcdefghij ...

  4. Java多线程学习六:使用线程池比手动创建线程好在那里以及常用线程池参数的意义

    为什么要使用线程池 首先,回顾线程池的相关知识,在 Java 诞生之初是没有线程池的概念的,而是先有线程,随着线程数的不断增加,人们发现需要一个专门的类来管理它们,于是才诞生了线程池.没有线程池的时候 ...

  5. Python学习日志08 - 字典

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 Python学习日志08课 - 字典 前言 进入正题 创 ...

  6. 三、Vue组件化开发学习笔记——组件化的基本步骤、全局组件和局部组件、父组件和子组件、注册组件的语法糖、模板分离写法、组件的数据存放

    一.什么是组件化? 人面对复杂问题的处理方式: 任何一个人处理信息的逻辑能力都是有限的 所以,当面对一个非常复杂的问题时,我们不太可能一次性搞定一大堆的内容. 但是,我们人有一种天生的能力,就是将问题 ...

  7. 前端学习日志(Vue)

    文章目录 模板语法 插值语法 指令语法 数据绑定 MVVM模型 数据代理 事件处理 计算属性 监视属性 进行监听 深度监视 条件渲染 列表渲染 1.基本列表 列表过滤 列表排序 生命周期 Vue组件的 ...

  8. Go实战Gin+Vue+微服务打造秒杀商城第五课 gin+vue实战

    gin+vue实战 后端: 用户管理 用户列表 登录/登出 商品管理 商品的增上改查 活动管理 商品关联 成功率 redis队列,不成功的回到队列继续,成功的从队列删除 结束难点: 代码和部署完全隔离 ...

  9. 一顿烤羊腿换来的Golang学习路线

    作者:阿秀 阿秀的求职笔记:https://interviewguide.cn 你好,我是阿秀. 这篇学习路线写完其实很久了,不过前段时间又请组内的Go后端资深研发工程师吃了一顿烤羊腿. 向他请教了一 ...

  10. golang学习笔记(基础篇)

    LCY~~Golang学习笔记 一.Go语言开发环境 ##安装Go开发包以及VsCode Go开发包与vscode配置安装教程网址:https://www.liwenzhou.com/posts/Go ...

最新文章

  1. c语言整形提升规则,C语言进阶:整型提升
  2. python函数注释 参数 省略号_python – make函数在help()函数中有参数的省略号
  3. 从近年CVPR看域自适应立体匹配
  4. qemu 对虚机的地址空间管理
  5. 各种数据结构性能的比较
  6. java毫秒 mysql秒_MySQL和Java时间毫秒之间的转换问题的总结
  7. 如何利用 AVFoundation 设计一个通用稳定的音视频框架?
  8. yii2 html编辑器,浅析Yii2集成富文本编辑器redactor实例教程
  9. 导入es数据_有道精品课实时数据中台建设实践
  10. 佳能g3800编程器固件_佳能g3800清零软件 佳能g3800打印机废墨清零
  11. 高德地图的测试key_获取高德地图key
  12. 计算机无法搜索文件夹内容,系统我的电脑中文件夹和搜索选项无法使用的解决方法...
  13. 台式计算机的内存容量,内存容量
  14. 如何在期货与现货市场之间套利?
  15. LaTeX中的保留字符(反斜杠)和特殊符号(角度、摄氏度)怎么表示?
  16. Android 自定义dialog 设置宽度的问题
  17. 实验十六:电位器传感器实验
  18. C语言 day07 基础知识学习
  19. Home Assistant 开发指南
  20. 为什么无法运行谷歌play_什么是Google Play积分,以及如何使用它们?

热门文章

  1. 实现用户行为监测之webfunny
  2. 普罗米修斯 软件_利用普罗米修斯软件制作课件
  3. 基于C#的词法分析关键字识别与变色
  4. Ubuntu20.04英文系统无法安装中文智能拼音输入法
  5. 除了方文山,用TA你也能帮周杰伦写歌词了
  6. 网页中图片无法显示解决方法
  7. 简单操作stm32f10xIO端口配置
  8. vue 用echarts写的进度条组件
  9. ArcEngine代码 两规冲突检测
  10. 百度竞价如何过滤无效点击