登录
首页 >  Golang >  Go问答

Gin 和中继器

来源:stackoverflow

时间:2024-02-26 19:39:16 176浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Gin 和中继器》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

如何制作一个中间件,使其仅适用于某些处理程序(不适用于所有处理程序)? 例如,

func (srv *server) Router(repository storage.Repository, cfg config.Flags) *gin.Engine {
 h := handlers.NewHandlerProvider()
 m := middlewares.NewMiddlewareProvider()
 srv.httpServer.Use(gin.Recovery())
 srv.httpServer.Use(m.LogHTTPHandler())
 srv.httpServer.POST("/", FirstHandler)
 srv.httpServer.GET("/qwe", SecondHandler)
 return srv.httpServer
}

我只想 m.loghttphandler() 只与 firsthandler 一起使用,而不是两者都使用


正确答案


使用gin.routergroup对所有具有公共中间件的路由进行分组:

package main

import (
    "fmt"

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

func main() {
    // New returns a new blank Engine instance without any middleware attached.
    router := gin.New()

    g1 := router.Group("/")
    {
        // Add the logger middleware to group 1.
        g1.Use(gin.Logger())

        g1.GET("/", gin.HandlerFunc(func(ctx *gin.Context) {
            fmt.Println("FirstHandler")
        }))
    }

    g2 := router.Group("/qwe")
    {
        g2.GET("/", gin.HandlerFunc(func(ctx *gin.Context) {
            fmt.Println("/SecondHandler")
        }))
    }

    router.Run(":8080")
}

终于介绍完啦!小伙伴们,这篇关于《Gin 和中继器》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>