java - REST API 输入的 Bean 验证和 API 版本控制

标签 java api rest bean-validation

我有一个这样的 bean :

  @Data
  public static class ClassUnderTest {
    @NotNull
    private String field1;

    @NotNull
    @Since(2.0)
    private String field2;

    @NotNull
    @Until(3.0)
    private String field3;
  }

@Since@Until是 Gson 注释,允许避免序列化/反序列化我的 REST API 上的某些字段,对于某些 API 版本。

我对该 API 的输入负载执行 bean 验证以引发约束违规。 基于 Gson 注释(而不是组!),我希望能够不针对每个版本提出相同的违规行为。


有没有办法,从ConstraintViolation<T> , 得到 Member (如 Method/Field )产生了违规,所以我检查它是否被注释了?

有没有一种方法可以使用 Bean Validation 来处理验证版本控制?

我唯一的解决方案似乎是从路径 ( getPropertyPath ) 中检索该成员,但这似乎并不容易...

最佳答案

您可以通过 getPropertyPath() 从违规中检索属性名称。也就是说,将您的约束分配给与版本对应的组可能是更好的方法。请注意,验证组也可以扩展现有组,这可能有助于对新版本中添加的模型约束进行建模。

关于java - REST API 输入的 Bean 验证和 API 版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15430192/

相关文章:

Java,App Insights : "I/O Exception: Invalid Argument or cannot assign requested address" only when I run using docker. gradle 在本地没有错误

Java NIO select() 返回时没有选择键 - 为什么?

Python 3.3 C 字符串处理(wchar_t 与 char)

javascript - Wordpress API,React : this. state.project.title 未定义

ios - 带有 iPhone 应用程序的 Magento SOAP API

java - 使用 POST 方法从 URL 中提取参数

java - 如何通过字符串名称获取类引用?

java - 用于内部 REST 通信的 OAuth + spring security

api - YouTube Data API playlistItems :List only returns max of 100 data items - or 2 pages of data, 工作正常 7 月 16 日

java - REST 参数验证