Я пишу службу REST с использованием Spring Boot и JPA. Мне нужно иметь возможность проверить некоторые поля ввода, и я хочу, чтобы я использовал правильный шаблон для этого.Подтверждение ввода весны REST
Давайте предположим, что у меня есть следующая модель, и я также не имеют никакого контроля над моделью:
{
"company" : "ACME"
"record_id" : "ACME-123"
"pin" : "12345"
"company_name" : ""
"record_type" : 0
"acl" : ['View','Modify']
"language" : "E"
}
Вещи, которые мне нужно сделать это:
- Убедитесь, что значение не является пустым - Это кажется достаточно простым, используя аннотацию @NotEmpty, и я могу передать сообщение.
- Убедитесь, что значение является частью допустимого списка значений. Пример здесь - это свойство языка в приведенной выше модели. Я хочу, чтобы значение было либо E, F, либо S. Это кажется возможным с помощью пользовательской аннотации (например, @ValidValue ({«E», «F», «S»})), но есть ли лучший способ «Springy» сделать это?
- Убедитесь, что значения в списке являются частью допустимого списка значений. Пример здесь - свойство acl. Опять же, это кажется возможным с помощью специальной аннотации, такой как @ValidListValues ({«Просмотр», «Изменить», «Удалить», «Скрыть»}), но тот же вопрос, что и выше.
- Установить значение по умолчанию - из того, что я прочитал, пользовательские аннотации проверки достоверности могут только проверять и не изменять. Я хотел бы сделать что-то вроде @DefaultValue (value = 5), если значение равно null. Это возможно? Подробнее об этом ниже.
- Задайте значение по умолчанию для возврата статического метода. Например, если поле pin в вышеприведенной модели не установлено, я хочу установить его как-то вроде Util.getRandomDigitsAsString (5).
- Использовать значения из другого свойства - я хотел бы проверить, что одно свойство содержит строку из другого свойства. Используя примерную модель, я хочу, чтобы record_id начинался с компании.
У меня есть эта настройка в том, что я считаю стандартным способом с контроллером -> сервис -> DTO -> DAO -> Модель. Другой вариант, о котором я думал, - это создать метод в validateCreate(), который будет проходить через все вышеперечисленные элементы и при необходимости вызывать исключение.
Спасибо.
Спасибо.Я дам им все это. Должны ли они выполняться в DTO или модели? – aaronanderson