我正在使用 Gin-Gonic 并正在创建自定义中间件。请参阅:https://github.com/gin-gonic/gin#custom-middleware
文档中的中间件是不是有这样写的原因:
func MyMiddleware() gin.HandlerFunc {
return func (c *gin.Context) {
// middleware
}
}
r := gin.New()
r.Use(MyMiddleware())
当我可以简单地这样写时:
func MyMiddleware(c *gin.Context) {
// middleware
}
r := gin.New()
r.Use(MyMiddleware)
感谢您的帮助!
最佳答案
如果您愿意,当然可以这样做:
func MyMiddleware(c *gin.Context) {
// middleware
}
r := gin.New()
r.Use(MyMiddleware)
建议您改为这样做的最可能原因:
func MyMiddleware() gin.HandlerFunc {
return func (c *gin.Context) {
// middleware
}
}
r := gin.New()
r.Use(MyMiddleware())
是,所以可以加参数,这里用的例子:https://github.com/gin-gonic/gin#custom-middleware是一个日志记录中间件。:
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
// code goes here
}
}
它没有任何参数,但您可以使用自定义记录器,如 logrus在你的中间件中添加一个参数:
你可以有一个像这样的日志记录中间件:
func Logger(log *logrus.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
// use logrus
log.WithFields(log.Fields{
"animal": "walrus",
}).Info("A walrus appears")
}
}
然后像这样使用它:
var log = logrus.New()
r.Use(Logger(log))
关于go - Gin-Gonic 中间件声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50574796/