我有個問題。這個問題是關于 gin 框架(golang)中的驗證系結。如果我請求一個端點(下面的請求)有結果成功,我的期望是顯示錯誤驗證。我在使用指標試圖[]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"))
}
uj5u.com熱心網友回復:
隨著物品的切片使用潛水
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"`
}
uj5u.com熱心網友回復:
為了驗證 with required,就像在你的例子中一樣,還有嵌套的專案,將 struct tag 設定為:
Patoks []PatokInputReposisi `json:"patoks" binding:"required,dive"`
當您使用 just 時dive,它不會驗證空/零切片。如果你放在required之后dive,它適用required于元素,而不是切片本身。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/312732.html
