Spring 数据 REST Bean 验证

Spring Data REST Bean Validation

考虑一个 Person 实体,其 属性 name 被注释为 @NotNull。然后是一个简单的 PersonRepository 并且这个 repo 公开了 Spring 数据 Rest.

当我 POST 创建一个新的 Person 时,如果 name 属性 是 null,则会按预期发生 ValidationException。但我在客户端实际得到的是一个 内部服务器错误 (500),消息是一个 TransactionSystemException,它在异常链中发生得晚得多。

我希望得到的是 Bad Request (400),其中包含实际的 ValidationException 以及所有有用的信息,以便客户可以知道问题出在哪里发布的数据。

似乎有一种方法可以将自定义验证器附加到 SDR,如 here 所述。但问题是,这不是自定义验证器,它是标准的 bean 验证,在要求存储库保存数据时发生。所以我不太确定这两者是如何结合在一起的。

所以问题:

  1. 我有什么选择可以让客户知道在使用 SDR 时提交的数据有什么问题?。诸如哪些字段无效以及每个字段的错误是什么之类的事情会很棒。
  2. 有没有关于这方面的例子?

非常感谢。

您需要的是一个合适的ExceptionHandler,它将处理后端异常并向前端客户端发送有意义的富消息(json/xml)。

看看这个git repository