Swagger-codegen强制执行定义中的"必需"字段

Kul*_*ain 9 maven-plugin swagger swagger-codegen

我在yaml文件中标记了这些字段(swagger规范)

  MyType:
    type: object
    required:
      - name
      - amount
Run Code Online (Sandbox Code Playgroud)

我正在使用带有这些配置的swagger codegen maven插件:

<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.3</version>

<language>spring</language>
<library>spring-mvc</library> 
Run Code Online (Sandbox Code Playgroud)

我希望在生成的类中也需要规范中的必填字段.但目前还没有发生这种情况.

有没有配置选项可以做到这一点?我有,<useBeanValidation>true</useBeanValidation>但这似乎对我不起作用.

我在Swagger-codegen GitHub页面上的Definitions中看到了一个类似的请求执行"必需"字段,其中建议是使用的useBeanValidation,我确实拥有它,但它仍然无效.

在Swagger-codegen GitHub页面上创建了此请求:Swagger-codegen强制生成的模型类中的"required"字段

Kul*_*ain 3

找到了解决方案。这实际上是我的错误;我期望生成的类中的字段被标记为必填。相反,它是带有注释并解决目的的getter方法。现在,验证到位后,我可以看到验证被触发,并在请求负载中未传递金额时显示消息。@NonNullrequired = trueAmount should be present

@ApiModelProperty(required = true, value = "Amount should be present")
@NotNull
public Amount getAmount() {
    return amount;
}
Run Code Online (Sandbox Code Playgroud)

  • 您能详细说明一下您是如何配置验证的吗?当注释不在字段本身上时,我无法使其工作。什么时候检查是否@Valid? (3认同)