Laravel Web 和 API 控制器结构。分开与干燥

2024-04-04

我想构建一个同时使用 Web 和 API 部分的 Laravel 应用程序。常见的(也是我的)问题是是否使用单独的控制器。

有 2 个选项:

  1. 独立控制器Laravel API 控制器结构? https://stackoverflow.com/questions/20182960/laravel-api-controller-structure

  2. 使用一个控制器并检查请求类型(是 Ajax,或取决于请求链接)并返回 JSON 或 HTML。适用于 API 和非 API 使用的 Laravel 资源控制器 https://stackoverflow.com/questions/17899609/laravel-resource-controllers-for-both-api-and-non-api-use?rq=1

那些持有第一意见的人并没有解释 DRY 问题的解决方案 - 除了返回语句(JSON 或 HTML 视图)之外,Web 和 API 控制器将是相同的。但由于大多数帖子建议单独的控制器,我怀疑我不了解 DRY 问题解决方案。

我不认为第二种方法有任何缺点。但人们会说类似的话

如果您只使用一个控制器,您很快就会得到一个包含数千行的混乱类。这不仅不能很好地扩展,而且对你和你的队友来说也很难合作。

请解释一下第一种方法(单独控制器)的 DRY 问题解决方案以及第二种方法(单个控制器)中可能存在的水下岩石

请解释哪种方法更可取。


我认为这是一个很好的问题,我也很想看到答案。

我可以看到这两种方法的论点。然而,我会创建和维护单独的控制器,同时使用服务在控制器之间共享公共逻辑,并且知道这永远不会改变。

例如,如果您允许用户上传头像图像。我会将这样的逻辑放入一个服务中,并在两个控制器中使用该服务。

在我看来,这种方法的原因是 Web 和 API 逻辑可能会有所不同,因此更容易迭代每个逻辑而不影响另一个逻辑。

如果这不太可能,那么我仍然会创建单独的路由,但将它们都指向相同的控制器,这样如果将来确实发生变化,您可以简单地将 API 路由重新指向它们自己的控制器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel Web 和 API 控制器结构。分开与干燥 的相关文章

随机推荐

  • 当给定这个模式与整数值匹配时,为什么 scala 会抱怨?

    Goal 编写一个函数 生成一个排除指定字符 由索引标识 的新字符串 Example takeAllExcept 0 abc 回报bc takeAllExcept 1 abc 回报ac takeAllExcept 2 abc 回报ab 我最
  • Visual Studio 2010 - 推荐的扩展[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 启动时加载 FastAPI 项目中的模型

    所以我目前正在开发一个为多种 NLP 服务提供服务的 FastAPI 项目 为此 我想提供来自 spacy 和 Huggingface 的不同模型 自从那些模型相当大的推理时间为每个发布请求加载模型相当长 我的想法是在 FastAPI 启动
  • 如何更改handleError?

    我有 jquery 脚本 它应该向我的文件发送响应 如果一切顺利 我会成功 但如果错误 我应该得到错误函数 但我得到jQuery handleError is not a function jQuery handleError s xml
  • 为 Python 3 安装 ipdb? [复制]

    这个问题在这里已经有答案了 我安装了ipdb https pypi python org pypi ipdb using pip 但我仍然得到 ImportError No module named ipdb 我还需要做其他事情才能引入这个
  • module.exports 返回未定义

    我目前是新来的Node JS 今天我试图read文件中的数据data json 这是 JSON 文件 username rahul v7 password 9673 username 7vik password 3248 username
  • phpmyadmin - Mysql 没有权限

    我在 Windows 7 上安装了 wamp 2 1 但是 当我打开 phpMyAdmin 时 出现错误 Mysql No Provileges 我卸载了wamp并重新安装了几次 但没有帮助 有谁知道如何解决这个问题 另外 当我尝试从 my
  • 使用 JavaScript 打开和关闭 CKEditor 4 内联编辑

    我需要能够使用按钮打开 关闭内联编辑 请参阅此处的内联编辑示例 http nightly v4 ckeditor com 3559 samples inlineall html http nightly v4 ckeditor com 35
  • 在 C 系列中,在循环中为什么“小于或等于”比“小于”符号更受青睐? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么在 C 系列语言中 当我们对任何循环使用计数器时 最优选的比较是Greater Equal To lt 或者它的倒数 请看一下这三段代码
  • 使用 css 绘制图像内的曲线

    是否可能以及如何在图像顶部和底部内制作一条曲线 请参见图像 我怎样才能用CSS实现这一点 将您的图像设置为 div 上的背景图像并使用此技术 我在示例中使用了纯红色 这里我使用伪元素来创建顶部和底部的曲线 请注意 顶部和底部偏移量是每个伪元
  • Mockito:验证来自内部匿名类的方法调用

    我有一个正在测试的类 其中包含一个具有内部匿名类的方法 匿名类中的方法之一调用被测类中的方法 但 Mockito 似乎没有意识到这一点 public class ClassUnderTest Dependency dependency pu
  • C# 中的 SplitContainer 拆分器?

    i am using a split container For some reason the splitter looks like this 很难看到 就是两条黑线中间那条微弱的两条线 我该如何解决这个问题并在两条线之间添加填充 我使
  • Log4Net 可用于 adoappender 的数据库字段 - 似乎还有更多,即 method_name?

    我最近创建了简单的 log4net 数据库表 用于通过 adonet 附加程序进行日志记录 并且它有效 但后来我注意到另一个网站使用额外的字段 看 哇 我很想知道在哪里可以获得可用字段名称的列表 例如 Method name 真的让我思考
  • 使用相对导入路径时 Aurelia 捆绑失败

    我将 aurelia 与 typescript 一起使用 我想避免使用相对导入路径 例如 import DialogBox from resources elements dialog box 反而 import DialogBox fro
  • 具有unpivot自动抓取列列表(oracle 11g)

    这是一个后续问题将一行转置为多行 Oracle https stackoverflow com questions 2344403 transpose one row into many rows oracle 我希望能够反转任意查询结果
  • ubuntu 12.04 中 android-ndk-r9d-linux-x86 的 ndk-gdb 出现错误

    我在ubuntu 12 04中使用android ndk r9d linux x86的ndk gdb来调试android本机应用程序 hello jni 但它收到此错误 WARNING The shell running this scri
  • 无限滚动抓取网站

    我写了很多抓取工具 但我不太确定如何处理无限滚动条 如今 大多数网站 例如 Facebook Pinterest 都有无限滚动条 您可以使用 selenium 废弃 twitter 或 facebook 等无限滚动网站 步骤 1 使用 pi
  • 我可以将 xmodem 协议与 PySerial 一起使用吗?

    我通过 PySerial 与串行设备建立了工作连接 但我也想通过 xmodem 协议传输文件作为我的程序的一部分 哪一种是最平台中立的方式来做到这一点 最坏的情况 我可以close my serial SerialPython中的对象及其使
  • 如何在Python中从.pb文件恢复Tensorflow模型?

    我有一个 tensorflow pb 文件 我想将其加载到 python DNN 中 恢复图形并获取预测 我这样做是为了测试创建的 pb 文件是否可以做出与正常 Saver save 模型类似的预测 我的基本问题是 当我使用上述 pb 文件
  • Laravel Web 和 API 控制器结构。分开与干燥

    我想构建一个同时使用 Web 和 API 部分的 Laravel 应用程序 常见的 也是我的 问题是是否使用单独的控制器 有 2 个选项 独立控制器Laravel API 控制器结构 https stackoverflow com ques