Что важно знать
@Validи аннотации@NotNull,@Size,@Email.@RestControllerAdvice+@ExceptionHandler— единая обработка.ProblemDetail(RFC 9457) встроен в Spring 6.
Bean Validation, @ControllerAdvice и единый формат ошибок.
@Valid и аннотации @NotNull, @Size, @Email.@RestControllerAdvice + @ExceptionHandler — единая обработка.ProblemDetail (RFC 9457) встроен в Spring 6.Практика. Добавить валидацию создания заказа и единую обработку ошибок с тестами.
Практика. Перевести ответы об ошибках сервиса на ProblemDetail и написать валидатор согласованности полей.
Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.
@Valid на теле запроса включает проверку ограничений на полях DTO (@NotBlank, @Email, @Size); при нарушении метод контроллера не вызывается, клиент получает 400.
Полный разборОграничения — аннотациями Bean Validation на полях DTO (@NotBlank, @Email, @Size, @Positive), проверка — @Valid на параметре контроллера, ошибки — в @RestControllerAdvice в едином формате (ProblemDetail с полями).
Полный разбор@Valid — стандарт Jakarta Bean Validation, включает каскадную проверку вложенных объектов. @Validated — аннотация Spring: группы валидации и проверка параметров методов бинов (на классе).
Полный разборSpring бросает MethodArgumentNotValidException, метод контроллера не вызывается, ответ по умолчанию — 400. Список ошибок полей нужно отдать клиенту через @RestControllerAdvice.
Полный разбор@ExceptionHandler в контроллере — локальный, в @ControllerAdvice — глобальный. Локальный обработчик подходящего типа выигрывает у глобального.
Полный разбор401 Unauthorized — личность не установлена: нет токена или он неверный. 403 Forbidden — личность известна, но прав нет. 404 Not Found — ресурс не найден.
Полный разбор404 Not Found — ресурса по этому адресу нет. Это группа 4xx — ошибка на стороне клиента; 5xx — ошибка сервера.
Полный разборОграничения ставят аннотациями на поля DTO: @NotNull, @NotBlank (строка не пустая), @Size(min, max), @Min/@Max, @Positive, @Email, @Pattern. В контроллере перед параметром тела — @Valid: при нарушении Spring бросает MethodArgumentNotValidException и отвечает…
Полный разборBean Validation и @Valid/@Validated, превращение ошибок в ответ, @ControllerAdvice и единый контракт, ProblemDetail (RFC 7807), multipart и interceptors.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.