您是在Resource类或Service Class中进行输入参数验证吗?

时间:2014-09-23 16:40:09

标签: java web-services validation rest service-layer

我正在创建一个REST Web服务,以便URL如下所示: /用户/ {用户id} /影像/ {图像标识}

在做其他事情之前,我必须做以下验证: 1.验证userId的格式是否正确。例如:整数而不是字符串等 2.验证imageId的格式是否正确。例如:整数而不是字符串等 3.验证数据库中是否存在userId。 4.验证数据库中是否存在imageId。

我有两个类(在服务器端)。一个类是“Resource”类,该类从客户端应用程序获取第一个调用(控制)。然后这个类将输入发送到“服务”类。服务类负责业务逻辑。

现在哪个班级应该执行上面提到的四个验证?

选项1:执行验证:'资源'类中的'验证1'(上面)和'验证2',并在“服务”类中执行'验证3'和'验证4'。

选项2:在“服务”类中执行所有验证。

哪种选项是验证输入的最佳方法。请告诉我哪个选项更好。

2 个答案:

答案 0 :(得分:1)

验证的目的是减少使用无效数据调用的功能。 因此选项1会更好。如果Userid和图像格式不正确,则不要调用其他功能。

答案 1 :(得分:0)

我不同意答案。验证应在Service类中进行。休息层就是您的服务层中的一个这样的客户端。您可以将服务层接口公开为Java API,另一个使用消息传递层的客户端(如Rabbit Mq等)公开。验证结果应适用于所有情况。另一个重要原因

  1. JDBC事务代码将更具原子性。想象一下,您有一个验证来检查实体是否存在然后采取行动。如果涉及数据库,则需要在单个事务中完成。
  2. 如果您的验证规则有所更改,那么它将是进行更改的地方。

您的其余代码需要将错误/异常映射到HTTP代码。您的服务层应该完全不知道HTTP协议