以下是代码示例:
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
/*
路由分组中间键
*/
type UserInfo struct {
Name string `json:"name"`
Age uint `json:"age"`
}
type Response struct {
Code int `json:"code"`
Data any `json:"data"`
Msg string `json:"msg"`
}
func UserListView(c *gin.Context) {
userInfo := []UserInfo{
{Name: "aye", Age: 17},
{Name: "小明", Age: 32},
{Name: "小黄", Age: 21},
}
c.JSON(200, Response{Code: 0, Data: userInfo, Msg: "成功"})
}
// 路由中间键方法
func Middleware(msg string) gin.HandlerFunc {
fmt.Println("middleware启动了....")
return func(c *gin.Context) {
token, _ := c.Get("token")
if token == "1234" {
c.Next() //继续执行
return
}
c.JSON(200, Response{Code: 1001, Data: nil, Msg: msg})
c.Abort() //拦截
}
}
// 分组嵌套
func UserRouterInit(router *gin.RouterGroup) {
//用户管理
//api/userAdmin地址增加一个拦截方法 这里的.User()相当于java中的Aop
userAdmin := router.Group("/userAdmin").Use(Middleware("用户验证失败"))
{
userAdmin.GET("/user", UserListView) // /api/userAdmin/user
}
}
func main() {
router := gin.Default()
//分组
api := router.Group("/api")
//嵌套
UserRouterInit(api)
router.Run(":8000")
}