高度解耦的gin路由中间件gin-auto-router,实现自动路由添加

高度解耦的gin路由中间件gin-auto-router,实现自动路由添加,第1张

项目地址

Github地址:https://github.com/dengshulei/gin-auto-router
Gitee地址:https://gitee.com/dengshulei/gin-auto-router

项目目标 路由自动注册,不用每次都手动添加将精力放到具体业务逻辑开发上来降低新手的入门难度 注意事项

暂时只实现了post请求方式,这也是在生产中推荐使用的方式,其它方式可以参考代码自己实现,比较简单。

简要描述

开发人员只需要编辑controller相关文件Article.go,就能实现轻松的访问“/Article/List”,类似于Nginx的路由方式

使用方法一

示例代码demo1

利用gin基本的路由对象,自动生成访问路由,主要代码如下:

入口主文件
$ cat main.go
package main
import "demo1/router"

func main() {
	//加载路由
	r := router.InitRouter()
	_ = r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
自动生成路由的主文件
# router下的文件InitRouter.go
$ cat InitRouter.go
package router
import (
	_ "demo1/app/controller"   //一定要导入这个Controller包,用来注册需要访问的方法
	ginAutoRouter "github.com/dengshulei/gin-auto-router"
	"github.com/gin-gonic/gin"
)
func InitRouter() *gin.Engine  {
	//初始化路由
	r := gin.Default()
	//绑定基本路由,访问路径:/Article/List
	ginAutoRouter.Bind(r)
	return r
}
控制器文件
# controller下的文件Article.go
$ cat Article.go
package controller

import (
	ginAutoRouter "github.com/dengshulei/gin-auto-router"
	"github.com/gin-gonic/gin"
	"net/http"
)

func init() {
	ginAutoRouter.Register(&Article{})
}

type Article struct {}

func (api *Article) List(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"code": 1,
		"msg": "ok",
		"data": "Article:List",
	})
}

func (api *Article) Test(c *gin.Context) {
	c.JSON(http.StatusOK, gin.H{
		"code": 1,
		"msg": "ok",
		"data": "Article:Test",
	})
}
使用方法二: 示例代码demo2

利用gin的分组路由Group实现路由分组,并对指定的分组使用登录验证等中间件
实现的效果是:登录接口“/auth”可以直接访问,只有登录成功的才可以访问“/v1/Article/List”

大多的文件都是与方法一类似,只有路由相关文件有细微的区别,详细的情况请查看示例代码 demo2

路由相关文件
$ cat InitRouter.go
package router

import (
	_ "demo2/app/controller/v1" //一定要导入这个Controller包,用来注册需要访问的方法
	"demo2/router/middleware/jwt"
	ginAutoRouter "github.com/dengshulei/gin-auto-router"
	"github.com/gin-gonic/gin"
)

func InitRouter() *gin.Engine  {
	//初始化路由
	r := gin.Default()
	//开启v1分组
	v1Route := r.Group("/v1")
	//加载并使用登录验证中间件
	v1Route.Use(jwt.JWT())
	{
		//绑定Group路由,访问路径:/v1/Article/List
		ginAutoRouter.BindGroup(v1Route)
	}

	return r
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存