Java 中的 OpenApi multipleOf

OpenApi multipleOf in Java

我尝试在我的 OpenApi 规范中使用 multipleOf-属性,但生成的 java 代码不包含任何注释或逻辑来验证 multipleOf。我如何使用 multipleOf-属性 来验证我的 JSON 输入?对于规范定义,我们使用 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;
    }

openapi-generator 不支持 multipleOf 属性 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());
    }