Проверка HTTP-запроса на наличие всех обязательных полей - PullRequest
0 голосов
/ 27 января 2020

Я использую джин для создания 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 инициализируется пустой строкой "" и, таким образом, ошибки не возникает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...