【问题标题】:Laravel (4.2): Where to put 3rd party API connection?Laravel (4.2):在哪里放置第 3 方 API 连接?
【发布时间】:2017-01-22 22:50:07
【问题描述】:

我对 Laravel 非常陌生,我想知道哪里是连接到 3rd 方 API 的理想位置。这是需要在我的系统中发生的请求的一般流程

1) 用户在表单中输入输入(使用 Angular 将数据发送到后端

2) 路由文件将请求路由到我在 Laravel 中创建的控制器(我实际上使用的是我使用 laravel 命令行创建的资源)

3) 在某处,我需要从该请求中获取一些数据并通过 CURL 将其发送给第 3 方并获取响应

4) 在其他地方,我需要解析该响应并在其上运行一些业务逻辑,我将在其中获取一些结果并将它们发送回客户端。其他数据将保存到数据存储(MySQL)中

现在我假设数据访问层将是我最终创建的 laravel 模型,但我对 API 连接以及业务逻辑的理想位置感到困惑。

我的第一个想法是这应该通过中间件来完成,但在进一步阅读文档后,现在看起来这只是一个过滤层。我当然可以将它放入模型中,这似乎满足“Fat Model Skinny Controller”范式,但出于某种原因我不喜欢这样。我希望我的数据访问层独立于业务逻辑,我也不想将所有这些废话都放入控制器中,因为这显然是错误的。

那么它应该去哪里呢?

【问题讨论】:

  • 出于好奇,如果你是 Laravel 的新手,为什么要从一个过时的版本开始?这是您正在采用的现有代码库吗?
  • 我实际上并没有意识到它是一个过时的版本,直到我把它全部设置好,我在关注这个:laravel.com/docs/4.2/quick#installation,它在 laravel.com 网站上,特别显示安装版本 4.2 所以我以为是最新版本。 -- 附录 -- 我得到那个链接的原因是这是谷歌搜索“laravel quickstart”的第一个结果
  • 好吧,不幸的是,你肯定想从 Laravel 5.3 重新开始。在 4 到 5 之间,编码和功能的易用性有了巨大的改进。

标签: php laravel model-view-controller


【解决方案1】:

这是我的建议:

创建一个名为ExternalAPI 的普通PHP 类,并将其保存在app 文件夹内一个名为API 的文件夹中。然后创建一个方法来调用 API 并解析结果。您甚至可以将此类放在Facade 中,以使其更易于使用。

然后创建另一个类来负责接收解析后的数据并执行业务逻辑。我们将其命名为APIProcessor,并将其保存在 app/API 文件夹中。

最后,在控制器中,您将从ExternalAPI 类调用方法,将结果传递给APIProcessor 类,然后从中获取结果并返回给用户。

显然,这些名称不好,您应该根据您的业务领域为这些类选择更好的名称,如果您愿意,甚至可以选择其他目录来保存它们。

这里要做的另一件好事是为负责与 API 通信的类创建一个接口,这样您就可以在必要时轻松地用另一个类替换这个类。

【讨论】:

  • 太棒了,谢谢你的建议。我可能会将其标记为正确,但只有在我实际尝试过之后(这可能需要我一段时间)
  • @DallasCaley 没问题,尽你所能找到一个好的解决方案,当你这样做时,与我们分享你的发现:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多