在域模型对象中,我有以下字段:
private TermStatus termStatus;
Run Code Online (Sandbox Code Playgroud)
TermStatus 是一个枚举:
public enum TermStatus {
NONE,
SUCCESS,
FAIL
}
Run Code Online (Sandbox Code Playgroud)
在 DTO 中,我具有与域对象中相同的字段。问题是,如何验证传递的值?如果 API 客户端现在传递带有枚举值作为参数的不正确字符串(例如nOnE),它将不会收到有关错误的任何信息,只会收到状态400 Bad Request。是否可以像这样验证它,例如,在诸如,javax.validation之类的注释的情况下,如果出现错误,至少会清楚它是什么。有一个想法为此进行单独的映射,例如而不是直接枚举传输,以便在这种情况下服务器本身会将值设置为该字段。但据我所知,这些东西在 REST API 中看起来不太好,所以我需要你的想法@NotBlank@Size"items/1/complete-term"SUCCESStermStatus
在描述服务的接口中,我有类似这样的方法:
TaskCard saveTaskCard(@NonNull TaskCard card, User user);
Run Code Online (Sandbox Code Playgroud)
我将@NonNull(lombok) 注释放在一个参数之前,但如果实现中没有相同的注释,它就不会单独工作。这意味着在实现此接口的类的方法中,我将需要再次放置此注解,从而重复代码。
@Override
@Transactional
public TaskCard saveTaskCard(@NonNull TaskCard taskCard, User user) {
taskCard.setUser(user);
return repository.save(taskCard);
}
Run Code Online (Sandbox Code Playgroud)
问题是,这是应该的吗?如果只把这个注解放在接口中,它们是行不通的,如果只放在实现接口的类中,那么API用户可能不明白,null不能传递给这些方法。我该怎么办?