Как применить ограничения с группами javax.validation.constraints из Swagger с SpringBoot? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть проект SpringBoot, в котором есть два метода, которые получают один и тот же тип объекта в качестве параметра, для каждого случая существуют разные проверки его свойств, это элегантно с использованием групп javax.validation.constraints, теперь при применении OpenApi - Документация по Ваггеру к проекту. Все работает очень хорошо, за исключением того, что интерфейс Swagger показывает, как требуется, все проверки в двух методах, он не может различить guish проверку, примененную группами.

Как применять ограничения с группами javax.validation.constraints из Swagger с SpringBoot?

интерфейсы для групп:


    public interface OnCreate {}

    public interface OnDelete {}

объект с проверками на свойствах с группами:


    @NotBlank(groups = { OnUpdate.class, OnDelete.class }, message = "codigo obligatorio")
    @NotNull(groups = { OnUpdate.class, OnDelete.class }, message = "codigo obligatorio")
    @Length(groups = { OnUpdate.class }, min = 6, max = 6, message = "cantidad de caracteres permitida 6")
    private String codigo;

    @NotNull(groups = { OnUpdate.class, OnCreate.class }, message = "mail obligatorio")
    @NotBlank(groups = { OnUpdate.class, OnCreate.class }, message = "mail obligatorio")
    @Email(groups = { OnUpdate.class, OnCreate.class }, message = "mail mal formado")
    @Length(groups = { OnUpdate.class, OnCreate.class }, min = 1, max = 150, message = "cantidad maxima de caracteres 150")
    private String mail;

    @NotBlank(groups = { OnUpdate.class, OnCreate.class }, message = "nombre obligatorio")
    @NotNull(groups = { OnUpdate.class, OnCreate.class }, message = "nombre obligatorio")
    @Length(groups = { OnUpdate.class, OnCreate.class }, min = 1, max = 150, message = "cantidad maxima de caracteres 150")
    private String nombre;

    @NotNull(groups = { OnUpdate.class, OnCreate.class }, message = "telefono obligatorio")
    @Max(groups = { OnUpdate.class, OnCreate.class }, value = 2147483647, message = "cantidad maxima de caracteres 2147483647")
    @Min(groups = { OnUpdate.class, OnCreate.class }, value = -2147483648, message = "cantidad maxima de caracteres -2147483647")
    private Integer telefono;

и услуги:



         @Validated
         public class PersonaRest extends GeneralRest {
         @PostMapping("/actualizar")
         @Validated(OnUpdate.class)
         public ResponseEntity editar(@Valid @RequestBody PersonaTO p) {
             logger.info("La persona update: " + p.toString());
             return new ResponseEntity(personaServicio.agregar(p), HttpStatus.OK);
         }

         @PostMapping("/eliminar")
         @Validated(OnDelete.class)
         public ResponseEntity eliminar(@Valid @RequestBody PersonaTO p) {
             logger.info("La persona eliminar: " + p.toString());
             try {
                 personaServicio.eliminar(p);
                 return new ResponseEntity(Boolean.TRUE, HttpStatus.OK);
             } catch (EmptyResultDataAccessException e) {
                 return new ResponseEntity(
                         new CustomErrorMessages("No se encontro una persona con el identificador " + p.getCodigo()),
                         HttpStatus.OK);
             }

         }

     }

обновление службы

удаление службы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...