gin实现统一的请求数据过滤
时间: 2023-05-17 22:07:15 浏览: 79
可以使用 gin 的中间件来实现统一的请求数据过滤。可以编写一个中间件函数,在该函数中对请求数据进行过滤和验证,然后将过滤后的数据存储到上下文中,供后续的处理函数使用。以下是一个示例代码:
```go
func FilterMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
var req struct {
Name string `json:"name" binding:"required"`
Age int `json:"age" binding:"required,min=18"`
}
if err := c.ShouldBindJSON(&req); err != nil {
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.Set("name", req.Name)
c.Set("age", req.Age)
c.Next()
}
}
func main() {
r := gin.Default()
r.Use(FilterMiddleware())
r.POST("/user", func(c *gin.Context) {
name := c.MustGet("name").(string)
age := c.MustGet("age").(int)
// do something with name and age
c.JSON(http.StatusOK, gin.H{"name": name, "age": age})
})
r.Run(":8080")
}
```
在上面的代码中,我们定义了一个名为 `FilterMiddleware` 的中间件函数,它会对请求数据进行过滤和验证,并将过滤后的数据存储到上下文中。然后我们在 `main` 函数中使用该中间件,并定义了一个处理函数来使用过滤后的数据。当请求到达处理函数时,我们可以通过 `c.MustGet` 方法来获取上下文中存储的数据。