Laravel(4.2):在哪里放置第三方API连接?

时间:2017-01-22 22:50:07

标签: php laravel model-view-controller

我是Laravel的新手,我想知道哪里是连接第三方API的理想之地。以下是我的系统中需要发生的请求的一般流程

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

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

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

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

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

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

那么应该去哪里?

1 个答案:

答案 0 :(得分:1)

这是我的建议:

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

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

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

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

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