OpenApi несколько в Java - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь использовать multipleOf-Property в моем OpenApi spe c, но сгенерированный код java не содержит аннотаций или logi c для проверки multipleOf. Как я могу использовать multipleOf-Property для проверки ввода JSON? Для определения spe c мы используем OpenApi 3.0.1

Здесь вы можете увидеть использование multipleOf:

abc_field:
  type: number
  description: Description of ABC field
  minimum: 0
  maximum: 99999999999.99
  multipleOf: 0.01
  example: 200.57

Есть ли какое-либо решение для решения моей проблемы проверки? Я использую проверочный api javax.validation, но для multipleOf нет аннотации.

Сгенерированный код для abc_field выглядит так:

    public BetraegeKennzahlen abcField(BigDecimal abcField) {
        this.abcField = abcField;
        return this;
    }

    @ApiModelProperty(
        example = "200.57",
        value = "Description of ABC field"
    )
    @Valid
    @DecimalMin("0")
    @DecimalMax("99999999999.99")
    public BigDecimal abcField() {
        return this.abcField;
    }

    public void setAbcField(BigDecimal abcField) {
        this.abcField = abcField;
    }

1 Ответ

1 голос
/ 28 мая 2020

Свойство multipleOf не поддерживается генератором openapi https://github.com/OpenAPITools/openapi-generator/issues/2192

Вы можете добавить настраиваемый валидатор ограничений для своих полей

public class CustomValidator implements Validator {
   @Override
   public boolean supports(Class<?> aClass) {
       return GeneratedClass.class.isAssignableFrom(aClass);
   }

   @Override
   public void validate(Object o, Errors errors) {
       GeneratedClass generatedClass = (GeneratedClass)o;
       //validate
   }
}

И добавить связыватель для этого валидатора

    @InitBinder("generatedClass")
    protected  void initBinderForAvatarId(WebDataBinder binder) {
        binder.addValidators(new CustomValidator());
    }
...