在Apigility / ZF2中调用第三方API的位置?

时间:2015-12-17 12:56:05

标签: api rest zend-framework2 restful-architecture apigility

我刚刚在Apigility中完成了我的第一个API。现在它基本上是数据库的门户,存储和检索通过应用程序上传的多页文档。

现在我想对文档进行一些处理,例如通过第三方API处理它们或修改图像质量等,并将它们返回给应用程序用户。

  1. 我通常把这种逻辑放在哪里(哪个班级)?我的第一反应是在Resource-Classes中实现这样的逻辑。但是我觉得它们会变得非常混乱,妨碍了对代码中API接口的清晰视图,并创建了对外部API的依赖。此外,我觉得有限,因为每个方法都对应一个API调用。
  2. 如果有一定的处理/计算时间怎么办?意思是我无法通过GET请求直接回复结果。在处理完成后,我考虑过运行异步流程并向应用程序发送推送通知。但是,我能在理想情况下实现这样的处理逻辑吗?
  3. 我很乐意接受一些在开发API方面经验丰富的人的建筑建议。谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 您可以使用zf-rest资源事件将侦听器与其他自定义逻辑连接起来,而不会污染您的资源。
    这些事件在RestController班级(for example a post.create event here on line 382)中被触发。

    当您使用Apigility-Doctrine模块时,您还可以使用DoctrineResource类(for example the DoctrineResourceEvent::EVENT_CREATE_POST event here on line 361)中触发的事件来连接您的听众。

  2. 您可以使用在ZendQueue之上构建的排队服务like ZendQueue或其他内容(第三方模块)进行管理。您可以使用Google找到不同的ZF2排队系统/模块。

    通过将排队服务注入您的监听器,您只需将作业直接推送到队列中即可。