我在yaml文件中标记了这些字段(swagger spec)
MyType:
type: object
required:
- name
- amount
我正在使用带有这些配置的swagger codegen maven插件:
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.3</version>
<language>spring</language>
<library>spring-mvc</library>
我希望在生成的类中也需要规范中的必填字段。但目前这种情况并没有发生。
是否有配置选项可以做到这一点?我有<useBeanValidation>true</useBeanValidation>
但这似乎对我不起作用。
我在Swagger-codegen GitHub页面上看到了一个类似的请求enforcement of "required" fields in Definitions,其中建议使用useBeanValidation
并且我确实拥有它但它仍然无效。
在Swagger-codegen GitHub页面上创建了此请求:Swagger-codegen enforcement of “required” fields in generated model classes
答案 0 :(得分:2)
找到解决方案。这实际上是我的错误;我期望生成的类中的字段被标记为必需。它是 getter 方法,它用@NonNull
和required = true
注释,解决了这个问题。现在,通过验证,我可以看到验证被触发并在请求有效负载中未传递金额时显示消息Amount should be present
。
@ApiModelProperty(required = true, value = "Amount should be present")
@NotNull
public Amount getAmount() {
return amount;
}