Проверка размера переменной пути

#java #spring #spring-boot #validation #spring-validator

#java #spring #весенняя загрузка #проверка #spring-валидатор

Вопрос:

Я нашел этот пример, как проверить переменную пути: https://www.mkyong.com/spring-boot/spring-rest-validation-example /

 @PostMapping(value = "/payment/{unique_transaction_id}")
      public ResponseEntity<StringResponseDTO> handleWpfMessage(@PathVariable("unique_transaction_id") @Valid @Max(32) String unique_transaction_id) throws Exception {
  

Могу ли я добавить @Valid дочерний элемент ограничения для строки @Max(32) или я должен добавить @Validated на уровне класса, как показано в руководстве?

Ответ №1:

Вы можете определить регулярное выражение для вашей переменной path

@PostMapping(value = "/payment/{unique_transaction_id:[a-zA-Z0-9]{0,32}}")

Комментарии:

1. Но должен ли я добавить @Valid на уровне класса?

2. Нет, не требуется, @Valid проверяет все ограничения, определенные в вашем классе POJO тела запроса.

3. Есть ли другой способ применить ограничение [a-zA-Z0-9] с аннотациями?

4. Я не думаю (или я не знаю), что существует какая-либо аннотация для той же цели. Существуют другие способы, такие как проверка его в фильтре / перехватчике, но это не прямолинейно, как приведенное выше решение.

5. Это может быть усовершенствованием в spring для той же цели, добавляющим регулярное выражение поля в @PathVariable аннотации.