0

假设我有一个创建用户的 REST API 方法。我还有一个配置了验证约束的用户实体。问题是如何验证请求中的数据。我的问题是:

  1. 如果不事先验证请求中的数据,我就无法填充用户实例——其中可能缺少某些数据,而其他数据可能无效。例如,通过类型提示null传递给用户实体的设置器。string
  2. 在填充用户实例之前,我不太热衷于单独验证请求数据,因为这将是为用户实体配置的验证约束的重复。在两个地方管理相同或相似的验证约束将是一个问题——控制器和实体验证配置。

所以基本上我想避免在代码和配置中重复验证约束,但同时我不得不在填充实体之前复制它。我怎样才能克服这个?

4

1 回答 1

3

这是相当生理的。

我建议使用没有检查限制的 DTO(基本上你可以在你的设置器中接受“所有类型的数据”,甚至可以通过使用不那么麻烦的公共属性)并对其进行验证。

当 DTO 有效时,创建处于有效状态的底层对象(值对象?)

当然,您需要“复制”一些约束,但我不会认为这是真正的复制,因为实际上,即使 DTO 和底层对象看起来相关,它们也不是同一个对象。如果您不同意(可能是这种情况),请停下来考虑通过将实体(应始终处于有效状态)与获取用户输入数据的模型分离来获得的提升。

于 2018-05-18T07:08:46.523 回答