У меня есть проект 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);
}
}
}
обновление службы
удаление службы