gin中抽离分组中的中间件,让中间件在单独的一个文件中

middlewares\baseApiTime.go

在main.go的同级目录下创建文件夹middlewares,
在middlewares下创建baseApiTime.go 文件
baseApiTime.go 代码如下

package middlewares

import (
	"fmt"

	"github.com/gin-gonic/gin"
)

func BaseApiTime(c *gin.Context) {
	fmt.Println("这个中间件用于统计时间")
	c.Next()
}

routers\user.go文件

package routers

import (
	"fmt"
	controllers "gin-quickstart/controllers/user"
	"gin-quickstart/middlewares"

	"github.com/gin-gonic/gin"
)

func getTime(c *gin.Context) {
	fmt.Println("这是一个中间件")
	c.Next()
}

// 注意首字母要大写的哈
func UserRouters(r *gin.Engine) {
	apiUserRouters := r.Group("/user", middlewares.BaseApiTime)
	{
		// 浏览器访问的是: http://localhost:8087/user/list
		// 接口应该是:127.0.0.1:8087/user/list
		// controllers是指的是包的名称,UserList是指的是包中的函数的名称
		apiUserRouters.GET("/list", controllers.UserController{}.UserList)
		// 浏览器访问的是: http://localhost:8087/user/detail
		// 接口应该是:127.0.0.1:8087/user/detail
		apiUserRouters.GET("/detail", controllers.UserController{}.UserDetail)
	}
}

中间件的调用方法:包名.函数

apiUserRouters := r.Group("/user", middlewares.BaseApiTime)
middlewares  .  BaseApiTime
   │               └─ 导出函数(middlewares/baseApiTime.go )
   └─ 包名(该文件第 1 行 `package middlewares`)
posted @ 2026-10-24 16:57  何人陪我共长生  阅读(4)  评论(0)    收藏  举报