我得到了一个带有控制器和服务的API,当调用控制器中的一个动作时,我必须应用一个验证,此验证需要检查数据库中的数据以验证它是否正确。在webapi中的异常处理MVC.net
据我所看到的也有叫“更新”,以防止错误
public IActionResult UpdateCustomer(CustomerDto customer)
{
if (!customerService.Validate(customer))
{
return Send400BadRequest();
}
customerService.Update(customer);
return Send200Ok();
}
2-呼叫内更新验证和罚球前处理这个
1-验证两种方法例外。
public IActionResult UpdateCustomer(CustomerDto customer)
{
customerService.Update(customer);
return Send200Ok();
}
在客户服务
public void Update(CustomerDto customer)
{
if (!Validate(customer)
throws new CustomValidationException("Customer is not valid");
//Apply update
}
我们已经有一个ActionFilter处理CustomValidationException所以它会返回一个错误请求。
1) 优点 +不要使用例外为使用运行流动
缺点 -Controller是更多的脂肪,对每一种情况下,将决定哪个是输出
2多个决策) 优点 +操作更原子化,所有逻辑都在服务内部。 +更容易测试 +该方法的每次使用都将被验证。
缺点 - 使用异常来管理流程。
哪一个更好的解决方案?
我确实需要论据来捍卫其中的一个。
我不会考虑2个额外的代码行膨胀控制器IMO。 –
对我来说不是那么臃肿与否,但更多的是决定不应该在控制器中 – Balder
@Balder,使用另一个动作过滤器在进行动作之前进行验证。贯穿始终的关切和单一责任原则。 – Nkosi