我正在使用Laravel开发API。我正在编写业务逻辑和应用程序逻辑,并尽力将它们尽可能地分开。但是,我是这种概念的新手。例如,我有登录用户的逻辑。我必须检查:
我不是在控制器中检查所有这一切(因为我认为这不是控制器的责任),而是在由控制器委托的单独的LoginFormProcessor
类中进行检查。
如果所有检查都通过,则LoginFormProcessor
将委派对象以将对象保存到数据库中或从数据库中获取对象。这是层次结构:
Controller -> LoginFormProcessor -> Repository
我想返回在LoginFormProcessor
或Repository
中发生的详细JSON错误(如果有),但不是直接从这些类中返回(因为这不是他们的责任),而是从控制器中返回。
我如何将上述错误返回给Controller,以便Controller可以创建有意义的响应并发送给客户端。
我应该从LoginFormProcessor
和Repository
返回一些整数类型的errorCode吗?但是随后,我将不得不检查所有可能的错误代码,这又是另一个麻烦。我认为这不是一个好习惯。
对此有任何建议和好的做法吗?
答案 0 :(得分:1)
您希望业务逻辑和应用程序逻辑与交付机制无关,这意味着它们不应返回HttpCodes。相反,您应该使用异常(需要时自定义异常),将其捕获到表示层(控制器)中并进行相应的转换。
在使用Laravel标记问题时,您可以查看https://laravel.com/docs/5.6/errors#render-method,了解如何捕获异常并将其转换为HttpCodes。