powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSR bean validation vs json schema validation
12 сообщений из 12, страница 1 из 1
JSR bean validation vs json schema validation
    #39758380
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под JSR bean validation можно понимать как родные валидаторы от java, так и валидаторы средствами spring`a, разные objectmapper`ы и т.д.

Под json schema validation подразумевает пока что сторонние либы, которые могут по имеющейся схеме валидировать json объект.

Собственно вопрос таков: есть некий rest сервис, и у него есть некий контроллер:

Код: java
1.
2.
3.
4.
@PostMapping(path ="/users")
public ResponseEntity<User> addUser(@Valid @RequestBody NewUser user) {
 //
}



Вот первый вариант. Аннотация @Valid отработает после попытки десериализации тела входящега запроса к обхекту класса NewUser.


Код: java
1.
2.
3.
4.
5.
public ResponseEntity<User> addUser(@RequestBody String user) {
 validateUser(user);
 //
}
 



Вот второй вариант, тут мы получаем строку и как-то ее валидируем, причем согласно заранее припасенной схеме.

Второй вариант сейчас набирает обороты и я встречаю его все больше и больше. Кто сталкивался? Какие плюсы и минусы? Зачем используете(если используете)? Почему отказались(если отказались)?

https://beanvalidation.org/1.0/spec/
http://json-schema.org/
https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/validation.html
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758448
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Ну дак кто провалидирует как не парсер выбранный лично прогером?
И что делать с уже новым json5?
авторЧисла могут быть в шестнадцатеричном виде, начинаться или заканчиваться десятичной точкой, включать Infinity, -Infinity, NaN и -NaN, начинаться со знака +.
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758452
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
https://json5.org
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758534
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинСобственно вопрос таков: есть некий rest сервис, и у него есть некий контроллер
Это не вопрос, это введение к вопросу. Умение разделять сущности есть одно из полезнейших качеств программиста.
ОзверинКакие плюсы и минусы?
А вот это уже вопрос. И ответ таков - в схеме автор декларативно задаёт правила валидации. Декларативно = гуд. Если возможностей схемы достаточно для предметной области - пользовать схему. Если возможностей недостаточно - писать валидатор самому (полностью, не деля на схему и самопал).
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758538
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555,
+1
Ну и на спринг наеду. Куда только спринг не лезет))
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758550
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрите, что получается.

Допустим, мы где-то на сайте заполняем какую-то форму - создаем новую компанию.
У компании есть поле "name". Поле можно заполнить исходя из бизнес логики(минимальная-максимальная длина, допустимые символы).

Уже на уровне view мы проводим первую валидацию

Далее, пользователь заполнил имя и нажал - создать. Запрос к rest сервису, туда отправился json, и уже в контроллере бэка мы проводим следующую валидацию на этапе десериализации объекта, к примеру.

Далее, мы преобразуем нашу DTO в DB entity и пытаемся сохранить, и на этапе сохраенния тоже будет валидация(как те, которые мы проверяли вещи, вроде максимальной длины поля, так и более экстравагантные, вроде constraint`ов).

Минимум в трех местах мы проверяем входящие данные. И проблема тут заключается не в том, что медленно или много, а в том, что вся эта валидация хорошо была б согласована во всех слоях: то есть после изменения схемы в БД надо бы поменять валидацию на уровнях выше. А то было б странно, что пользователю говорит, что макс длина - 70, а в базе, допустим, уже 60.

В моем случае все это "устаканивается" после создания issue от пользователя о том, что мол де столько то символов написано, а реально - столько то.

Может у вас как-то более согласовано? Как?
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758551
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123alex55555,
+1
Ну и на спринг наеду. Куда только спринг не лезет))

спринг удобен, почему бы и нет?
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758562
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинPetro123alex55555,
+1
Ну и на спринг наеду. Куда только спринг не лезет))

спринг удобен, почему бы и нет?нарушает закон федеральный о конкуренции)
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758563
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинМинимум в трех местах мы проверяем входящие данные.при rest клиент не зависим и внешний от вас.
Делайте другое свое API и не проверяйте.
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758566
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Кстати, если микросервисы, то и между ними будете проверять.
Нет золотой пули.
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758737
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинвся эта валидация хорошо была б согласована во всех слоях
...
Как?
Единый валидатор.

Например, при использовании GWT у меня не возникает проблем с одинаковой валидацией на клиенте и на сервере. Но можно и в разных языках, например, одни и те же декларативно заданные параметры использовать.

Логику БД (констрэйнты) делают для предотвращения грубых ошибок разработчиков, это не валидатор. Валидатор валидирует юзеров. А констрэйнты - девелопера.
...
Рейтинг: 0 / 0
JSR bean validation vs json schema validation
    #39758752
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Логику БД (констрэйнты)а также триггеры, FK, хранимки делают для непротиворечивой Модели.
Это самое ценное в бд у заказчика и бизнеса.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSR bean validation vs json schema validation
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]