[英]Spring Boot Request body validation on same DTO used for different API
在我的请求正文 DTO 中,我希望 API 之一需要特定字段,但另一个不需要。
我的请求正文:
@Data
class MyClass {
@NotNull
private String fullName;
@NotNull
private String firstName;
@NotNull
private String lastName;
}
我希望/api/v1
需要fullName
但/api/v2
不需要。 我在javax.validation
的请求正文中使用@Valid
。
您必须使用 Spring 的@Validated
,它是 JSR-303 的@Valid
的变体。 这在方法级别使用:
Controller:
@RequestMapping(value = "apiV1Method")
public String apiV1Method(@Validated(Account. ValidationAPI1.class) MyClassDTO myClassDTO) {...}
@RequestMapping(value = "apiV2Method")
public String apiV2Method(@Validated(Account. ValidationAPI2.class) MyClassDTO myClassDTO) {...}
Object:
class MyClassDTO {
public interface ValidationAPI1 {}
public interface ValidationAPI2 {}
@NotNull(groups = {ValidationAPI1.class})
private String fullName;
@NotNull(groups = {ValidationAPI1.class, ValidationAPI2.class})
private String firstName;
@NotNull(groups = {ValidationAPI1.class, ValidationAPI2.class})
private String lastName;
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.