Gin 不在数组嵌套结构中绑定验证
Gin not binding validation in array nested struct
我有问题。这个问题是关于 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"))
}
随着项目的切片使用潜水
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"`
}
我有问题。这个问题是关于 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"))
}
随着项目的切片使用潜水
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"`
}