小编Nar*_*Oo 的帖子

如何在 DTO 中验证枚举?

在域模型对象中,我有以下字段:

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

java rest enums spring spring-boot

6
推荐指数
2
解决办法
2万
查看次数

我应该用@NonNull 注释标记接口及其实现吗?

在描述服务的接口中,我有类似这样的方法:

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不能传递给这些方法。我该怎么办?

java spring spring-mvc lombok spring-data

5
推荐指数
1
解决办法
732
查看次数

标签 统计

java ×2

spring ×2

enums ×1

lombok ×1

rest ×1

spring-boot ×1

spring-data ×1

spring-mvc ×1