【问题标题】:Gin not binding validation in array nested struct数组嵌套结构中的杜松子酒没有绑定验证
【发布时间】:2021-11-26 11:40:35
【问题描述】:

我有问题。这个问题是关于 Go Gin 框架中的验证绑定。 如果我使用以下请求请求端点,它会通过验证,但我的期望是显示错误。我尝试在[]PatokInputReposisi 中使用指针到*[]PatokInputReposisi,但它不起作用。

我的请求(JSON):

{
    "date": "2020-01-29T14:47:43.511Z",
    "pitwd": "PIT",
    "area": "RTN",
    "sector": "JL. ILJIN",
    "position": "ES",
    "patoks": [
        {
            "northing": -1.00
        }
    ]
} 

类型结构定义:

type InputReposisiMonitoringRequest struct {
    Date     time.Time            `json:"date" binding:"required"`
    PitWD    string               `json:"pitwd" binding:"required"`
    Area     string               `json:"area" binding:"required"`
    Sector   string               `json:"sector" binding:"required"`
    Position string               `json:"position" binding:"required"`
    Patoks   []PatokInputReposisi `json:"patoks" binding:"required"`
}

type PatokInputReposisi struct {
    Northing  float64 `json:"northing" binding:"required"`
    Easting   float64 `json:"easting" binding:"required"`
    Elevation float64 `json:"elevation" binding:"required"`
    IsSkip    bool    `json:"is_skip" binding:"required"`
}

在处理程序中:

func (h *Handler) handleInputReposisiPatok(c *gin.Context) {
    var request InputReposisiMonitoringRequest
    if err := c.ShouldBindJSON(&request); err != nil {
        c.JSON(http.StatusBadRequest, utils.ErrorResponse(err))
        return
    }
    c.JSON(http.StatusOK, utils.Response("success"))
}

【问题讨论】:

    标签: validation go go-gin


    【解决方案1】:

    使用切片项目使用潜水

    type InputReposisiMonitoringRequest struct {
        Date     time.Time            `json:"date" binding:"required"`
        PitWD    string               `json:"pitwd" binding:"required"`
        Area     string               `json:"area" binding:"required"`
        Sector   string               `json:"sector" binding:"required"`
        Position string               `json:"position" binding:"required"`
        Patoks   []PatokInputReposisi `json:"patoks" binding:"required,dive"`
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 2020-10-17
      • 2022-01-15
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多