gin使用总结-路由

1、路由定义
func InitRouter() *gin.Engine {
    router := gin.Default()
    router.GET("/", controllers.IndexAction)
    router.GET("/one", controllers.GetOneAction)
    v2 := router.Group("v2")
    v2.GET("/", controllers.Index2Action)
    v2.GET("/one", controllers.GetOneAction)
    return router
}

2、reques参数获取及返回值
func GetOneAction(ctx *gin.Context) {
   id, _ := ctx.GetQuery("id")
   intId, _ := strconv.Atoi(id)
   var model models.User
   res := model.GetOne(intId)
   /*var pbUser cs.User
   pbUser.Id = int32(res.Id)
   pbUser.Age = string(res.Age)
   pbUser.Name = res.Name
   ctx.ProtoBuf(http.StatusOK, &pbUser)*/
   ctx.JSON(http.StatusOK, res)

3、中间件(钩子函数)添加
 //定义hooks
func Hook1(ctx *gin.Context) {
   fmt.Println("hook1 is running!")
   ctx.Next()
   fmt.Println("hook1 is finished!")
}
//为单独的一个路由添加hook
router.GET("/", hooks.Hook1,controllers.IndexAction)
//为一个路由组添加hook
v2 := router.Group("v2")
v2.GET("/", controllers.Index2Action)
v2.GET("/one", controllers.GetOneAction)
v2.Use(hooks.Hook1)

//添加全局hook
router.Use(hooks.Hook1)

//添加多个hooks
router.Use(hooks.Hook1,hooks.Hook2)

 

posted @ 2022-03-29 10:39  hugeQAQ  阅读(175)  评论(0编辑  收藏  举报