【问题标题】:What is the Best Way to Return Errors from Business Logic or Application?从业务逻辑或应用程序返回错误的最佳方式是什么?
【发布时间】:2018-09-03 16:03:18
【问题描述】:

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

  1. 给定的凭据是否有效?
  2. 系统中是否存在凭据?
  3. 用户是否处于活动状态
  4. 保存数据
  5. 尝试获取一些数据,但没有找到
  6. 等等……

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

Controller -> LoginFormProcessor -> Repository

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

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

有什么建议和好的做法吗?

【问题讨论】:

    标签: oop laravel-5 design-patterns model-view-controller


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2015-11-10
      相关资源
      最近更新 更多