Я использую джин для создания http-сервера. Я хочу проверить каждый HTTP-запрос перед тем, как начать вызывать другие мои функции.
Я создал следующий struct
с именем CreateUser
, чтобы проверить все входящие HTTP-запросы POST для CreateUser
type CreateUser struct {
FirstName string `validate:"min:2, regexp=^[a-zA-Z]*$"`
LastName string `validate:"min:2, regexp=^[a-zA-Z]*$"`
Email string `validate:"min:10, max=255 regexp=^[0-9a-zA-Z]*@[a-z]*$"`
}
Следующая функция вызывается при запросе UserCreate
. Но даже если я не отправлю firstName
в запросе почты. Проверка проходит без ошибок. Что может быть причиной этого? Как я могу проверить каждый HTTP-запрос для его схемы?
func (uhc UserHttpController) UserCreate(ctx *gin.Context) {
var createUser config.CreateUser
if err := ctx.BindJSON(&createUser); err != nil {
// send the bad request response
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
createdUser := InitUserController(uhc.globalVars).UserCreate(createUser)
ctx.JSON(http.StatusOK, gin.H{
"data": createdUser,
})
}
Я пытался без отправки lastName
в теле запроса POST, но при отладке LastName
инициализируется пустой строкой ""
и, таким образом, ошибки не возникает.