Генерация ошибок при обработке пропущенных значений (int) в JSON Binding - PullRequest
0 голосов
/ 02 августа 2020

Используя gin-goni c, я хотел бы определить, когда целочисленное значение опускается во входящем запросе JSON, даже если ноль является возможным значением. Другими словами, ноль - допустимое значение, но мы не можем принять значение по умолчанию. Создание структуры с указателями кажется противоположным, потому что не существует действительного объекта с отсутствующим значением. Во время процесса маршалинга я хотел бы знать, не заполнены ли какие-либо поля.

Я использую OpenAPI для определения интерфейса с «обязательными» полями, и я хочу, чтобы ответы об ошибках соответствовали определению API. Я использую генератор кода для создания заполняемых веб-моделей. Я бы хотел избежать маршалинга JSON в карту, проверки карты и последующего заполнения модели.

Например:

type mouth struct {
   teeth int
   fillings int
}
func ProcessTi0(c *gin.Context) {
    var b mouth
    err = c.Bind(&b)
    if err != nil {
      c.JSON(400, gin.H{
          "err": err,
      })
    }
    ....
}

В настоящее время запрос {} допустимо.

Поведение привязки по умолчанию - молча записывать ноль в поле, если он не указан, но я бы хотел сгенерировать ошибку.

1 Ответ

2 голосов
/ 02 августа 2020

Похоже, ваш генератор кода нуждается в поддержке создания пользовательских тегов для вашей модели. Затем вы можете обратиться к https://github.com/gin-gonic/gin#model -binding-and-validation , который указывает, что есть тег привязки, который вы можете использовать, чтобы объявить, какое поле является обязательным.

...