gpt4 book ai didi

Golang 请求中间件库?

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:02 24 4
gpt4 key购买 nike

我正在为我的路由设置的复用器使用 gorilla 复用器。

是否有任何开源库可以提供某种请求中间件?

router.HandleFunc("/products", GetProducts).Methods("GET")

所以目前我有 GetProducts 函数,它将返回产品等。

但这是我正在构建的 REST api,所以我必须处理加载用户、验证请求的“api token ”等事情。

我不想对每个方法都这样做,所以我希望我有一些请求中间件,当我可以在执行之前/之后执行此操作时,以及添加诸如 User 之类的东西, 权限每个中间件函数中的上下文。

最佳答案

您可以使用 Go Gin支持中间件的 HTTP Web 框架以及您想要的:

使用中间件:

func main() {
// Creates a router without any middleware by default
r := gin.New()

// Global middleware
// Logger middleware will write the logs to gin.DefaultWriter even you set with GIN_MODE=release.
// By default gin.DefaultWriter = os.Stdout
r.Use(gin.Logger())

// Recovery middleware recovers from any panics and writes a 500 if there was one.
r.Use(gin.Recovery())

// Per route middleware, you can add as many as you desire.
r.GET("/benchmark", MyBenchLogger(), benchEndpoint)

// Authorization group
// authorized := r.Group("/", AuthRequired())
// exactly the same as:
authorized := r.Group("/")
// per group middleware! in this case we use the custom created
// AuthRequired() middleware just in the "authorized" group.
authorized.Use(AuthRequired())
{
authorized.POST("/login", loginEndpoint)
authorized.POST("/submit", submitEndpoint)
authorized.POST("/read", readEndpoint)

// nested group
testing := authorized.Group("testing")
testing.GET("/analytics", analyticsEndpoint)
}

// Listen and serve on 0.0.0.0:8080
r.Run(":8080")
}

关于Golang 请求中间件库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47116305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com