在哪里做输入验证

时间:2011-01-09 20:43:30

标签: validation input

假设业务层由Web使用,并且某些业务层的功能也作为REST Web服务向公众开放。

您是否会在表示层(Web或REST Web服务)或业务层中对业务逻辑进行输入验证,并在表示层捕获验证错误(由业务层引发)?

(特别是弹簧框架正在使用中)

3 个答案:

答案 0 :(得分:3)

如果有疑问,通常最好将业务逻辑(包括输入验证逻辑)放在业务层中,因为

  • 您可能正在处理多种演示媒体(例如,网页GUI和API)
  • 您不想重复代码并管理该逻辑的两个实例

良好的框架将允许您在一个公共位置定义此类逻辑并支持尽早捕获问题(例如,在表示层中),这通常更直观(快速失败),更具可扩展性(前端捕获它)解决方案

但是,如果您的框架不支持此功能,您应该更喜欢一致性和可维护性,并将逻辑放在业务层中。

答案 1 :(得分:1)

我建议在所有人员中进行验证。我做UI,因此用户体验很高,有即时反馈。但我从不相信UI提供的数据(想想禁用JS的用户)。现在,服务器端验证的详细程度取决于您。但是如果可以的话,你想避免让你的用户因为完全往返服务器而受苦。

答案 2 :(得分:1)

应始终在业务层中发生违反业务规则的行为。您是否允许主动检查是一项设计决定,您是否希望对客户进行急切检查以避免往返。