美文网首页
gin middleware 注意事项

gin middleware 注意事项

作者: xcyzjs | 来源:发表于2022-06-07 14:49 被阅读0次

    1. gin middleware 如果要中止后面中间件及所有程序的执行, 需要使用 c.Abort() + return

    其中 Abort 会中止其后的中间件及页面处理程序, 而不会中止当前中间件函数内的余下程序, 
    使用 return 来中止当前中间件内后部的程序
    
    func RejectMethodsExceptGet() gin.HandlerFunc {
        rejectMethods := map[string]struct{}{
            "POST":   {},
            "DELETE": {},
            "PUT":    {},
            "PATCH":  {},
        }
        return func(c *gin.Context) {
            if _, exist := rejectMethods[c.Request.Method]; exist {
                c.AbortWithStatusJSON(403, gin.H{
                    "err_msg": "invalid method",
                })
                return
            }
    
            c.Next()
        }
    }
    
    

    2. 中间件 Use 需要写在路由注册之前, 否则将不对之前注册的路由起作用

        r := gin.New()
        r.Use(RejectMethodsExceptGet())
    
        r.GET("/test", func(c *gin.Context) {
            example := c.MustGet("example").(string)
    
            // it would print: "12345"
            log.Println(example)
        })
    
    

    相关文章

      网友评论

          本文标题:gin middleware 注意事项

          本文链接:https://www.haomeiwen.com/subject/rhjemrtx.html