将 request body 绑定到不同的结构体中

    1. func SomeHandler(c *gin.Context) {
    2. objA := formA{}
    3. objB := formB{}
    4. // 读取 c.Request.Body 并将结果存入上下文。
    5. if errA := c.ShouldBindBodyWith(&objA, binding.JSON); errA == nil {
    6. // 这时, 复用存储在上下文中的 body。
    7. c.String(http.StatusOK, `the body should be formB JSON`)
    8. // 可以接受其他格式
    9. } else if errB2 := c.ShouldBindBodyWith(&objB, binding.XML); errB2 == nil {
    10. } else {
    11. ...
    12. }
    13. }
    • 会在绑定之前将 body 存储到上下文中。 这会对性能造成轻微影响,如果调用一次就能完成绑定的话,那就不要用这个方法。