0
我正在设计一个用于创建新员工的REST API。Spring验证+ Swagger文档:基于其他领域的条件或值
根据员工类型,将会有必填字段,否则它们不是。例如:所有创建API调用都应该通过employeeName
。但contractVendorName
应该是强制性的只有employeeType=contractor
问题:
- 如何使用Spring的验证执行这样的限制?
- 如何在Swagger中记录这些字段?
- 如果不支持有条件的验证,是否有意义有不同的API,用于
- createEmpoyee(ContractEmployee CE)
- createEmpoyee(RegularEmployee重)
在ContractEmployee对象做弹簧+招摇的注释标记contractVendorName
为必填项。
这里,我已经采取了只有一个领域为例,contractVendorName
。我可能有5-6个字段,根据Employee类型可选或强制。我宁愿使用spring验证,这样我就不必编写样板代码来自己检查所有的验证。多个员工类型对象的副作用是API的增加。由于每个对象类型都需要一个单独的API。
的方法什么好的建议有单独的对象+多个API与自API,并与各界一个对象,并以此为基础进行的员工类型为每个字段手动验证?
public class EmployeeDTO {
/**
* Employee Type: full-time, part-time, permanent, contractor
*/
@NotNull
@ApiModelProperty(required = true)
private String employeeType;
/**
* Mandatory field that is to be given by client
*/
@NotBlank
@ApiModelProperty(required = true)
private String employeeName;
/**
* How to make this field mandatory when employeeType = contractor ?
* Is this possible in Spring?
* How to document it in Swagger?
*/
private String contractVendorName;
}