从业务逻辑或应用程序返回错误的最佳方法是什么?

MKJ*_*MKJ 5 oop model-view-controller design-patterns laravel-5

我正在使用 Laravel 开发 API。我正在编写业务逻辑和应用程序逻辑,并尽可能将它们分开。但是,我对这些概念很陌生。例如,我有登录用户的逻辑。我必须检查:

  1. 如果给定的信用有效或无效?
  2. 如果系统中存在信用?
  3. 用户是否活跃
  4. 保存数据
  5. 尝试获取一些数据,但没有找到
  6. 等等...

我不是在控制器中检查所有这些(因为我认为这不是控制器的责任),而是在LoginFormProcessor由控制器委托的单独类中。如果所有检查都通过,LoginFormProcessor则将委托对象在数据库中保存/获取对象。这是层次结构:

Controller -> LoginFormProcessor -> Repository
Run Code Online (Sandbox Code Playgroud)

我想返回发生在LoginFormProcessoror 中的详细 JSON 错误(如果有),Repository但不是直接从这些类(因为这不是他们的责任)而是从控制器返回。

我如何将提到的错误返回给 Controller,以便 Controller 可以创建有意义的响应并将其发送给客户端。我应该从LoginFormProcessorand返回一些整数类型的 errorCodesRepository吗?但随后我将不得不检查所有可能的错误代码,这是另一个令人头疼的问题。我不认为这是一个好习惯。

关于它的任何建议和良好做法?

Phi*_*l-R 2

您希望业务逻辑和应用程序逻辑与交付机制无关,这意味着它们不应返回 HttpCode。相反,您应该使用异常(需要时自定义异常),在表示层(控制器)中捕获它们并相应地转换它们。

当您使用 Laravel 标记您的问题时,您可以查看https://laravel.com/docs/5.6/errors#render-method以了解如何捕获异常并将其转换为 HttpCodes。