【发布时间】:2017-09-24 13:19:06
【问题描述】:
我想构建一个同时使用 Web 和 API 部分的 Laravel 应用程序。常见的(也是我的)问题是是否使用单独的控制器。
有两种选择:
使用一个控制器并检查请求类型(是 Ajax,或取决于请求链接)并返回 JSON 或 HTML。 Laravel resource controllers for both API and non-API use
那些持有第一意见的人没有解释 DRY 问题的解决方案 - 除了返回语句(JSON 或 HTML 视图)之外,Web 和 API 控制器将是相同的。但是由于大多数帖子都建议将控制器分开,我怀疑我对 DRY 问题解决方案一无所知。
我认为第二种方法没有任何缺点。但是人们会说类似
如果你只使用一个控制器,你很快就会得到一个包含数千行代码的凌乱类。这不仅不会很好地扩展,而且对你和你的队友来说也很难合作。
请解释一下第一种方法(独立控制器)的 DRY 问题解决方案以及第二种方法(单控制器)中可能出现的水下岩石
请说明哪种方法更可取。
【问题讨论】:
-
Repository 模式将数据访问逻辑分离并映射到业务逻辑中的业务实体。为 web 和 api 控制器创建一个通用存储库。
-
@sumit 如果可以的话,我会多次投票。
-
@sumit 无论是否使用存储库,控制器方法不都是一样的吗?退货部分除外。是的,小控件,但几乎一样?
-
@smit 我以前读过这篇文章,然后又重读了一遍。它讲述了获取数据的更高层次的抽象。但是 API 和 WEB 方法应该具有相同的外观(使用存储库获取数据)但返回语句不同。所以我看不出这对我的问题有什么帮助。即使方法由 2 行组成(如文章中所示),是否有理由在不同的控制器中重复它们以替换 retrurn 语句?
标签: laravel