Учитывая следующий ресурс:
Код: Выделить всё
{
productId: 7,
name: "container",
contactPerson: "peter",
price: 12
}
Код: Выделить всё
{
productId: 7,
contactPerson: null
}
- Джексон (десериализация JSON)
- Валидатор Hibernate (проверка компонентов)
- Микропрофиль OpenAPI (определение API)
Среди прочего я опробовал необязательную Java, и хотя изначально она была похоже, это сработало, это неправильный инструмент для этого, поскольку необязательный параметр не должен содержать значение NULL, но также должна быть возможность явно установить значение NULL в PATCH (вместо того, чтобы опускать его).
- но я продвинулся очень далеко с использованием необязательного. Единственная проблема заключалась в том, что Hibernate Validator не поддерживал его так, как мне было нужно.
Код: Выделить всё
@Schema(required = false, nullable = false)
Optional name = Optional.empty();
JsonNullable
Джексон предоставляет аннотацию JsonNullable. Хотя это подходящий инструмент для этой задачи и, по-видимому, он поддерживается для openapi, он, похоже, не поддерживается для валидатора спящего режима, по крайней мере, я не смог ничего о нем найти.
Проверка
В основном проблема возникает во время проверки аннотаций проверки компонентов, которые важны для API.
- При использовании таких аннотаций, как @Size(255), @Email и т. д., существует требование, чтобы...
...эти проверки должны проверяться валидатором Hibernate, когда поле задано/установлено в PATCH - ...эти проверки не должны проверяться, если поле опущено (отсутствует ) в ПАТЧЕ.
--
Охватывается ли REST-PATCH этими основными библиотеками экосистемы Java, и если да, то каков рекомендуемый способ его поддержки?>
Подробнее здесь: https://stackoverflow.com/questions/790 ... -validator
Мобильная версия