使用Zend Framework 3构建RESTful服务的最佳方式

4

我们正在启动一个新项目,将利用RESTful服务与Web客户端(AngularJS)和移动平台(Android和iOS)通信。

这个想法是将业务逻辑隐藏在RESTful服务中,并使用相同的代码来为Web客户端和移动平台提供服务。

我们的服务器正在使用Zend Framework 3构建(我对这个框架还不熟悉)。该应用程序将拥有数十个实体和数百个服务。

我注意到网络上似乎ZF2有一个REST模块,但我找不到ZF3的模块(至少在文档中找不到)。

以下是我的一些问题:

  • 使用ZF3提供RESTful服务的最佳方法是什么?
  • 我需要安装一个ZF模块吗?是否有现成的东西可以直接在ZF3中使用?
  • 我是否应该在代码中创建一个专门针对我的服务的模块?其他模块是否应该调用此REST模块以获取业务逻辑?

2
您会发现使用基于ZendFramework的apigility非常容易,它已经解决了RESTful协议、请求验证和响应格式等所有问题。 - Dragos
1
我工作过的大部分项目都将业务逻辑保留在单独的ZF模块中,该模块通过服务公开数据,然后从Apitility的控制器/资源查询这些服务。 - Dragos
我同意你在辩论方面的观点,只是由于SO的结构,辩论不适合在这里进行,因为没有人能够百分之百地确定哪种方法是最好的,因此无法接受一个单一的答案。但是我们只能选择一个答案作为被采纳的答案。 - Dragos
2
抱歉,但我不同意。SO旨在提出问题和提供答案。您可以对答案或最佳答案进行投票,甚至选择不投票。内容提供知识,而不是投票。在开始编码之前,架构和设计讨论是最重要的事情,但这是我的观点。 - Mendes
这是一个有效的观点 :) 我不能不同意。 - Dragos
显示剩余3条评论
1个回答

6
ZF3仍然使用AbstractRestController,可以在这里找到。Apigility可能是REST应用程序的起点,但您也可以考虑只实现Apigility的某些部分,并在其上构建自己的逻辑。有趣的模块可以在ZF-Campus GitHUB存储库中找到:

这些模块中的大多数(如果不是全部)都已重构以支持ZF3(并向后兼容ZF2)。

请浏览存储库本身,因为您可能会发现其他有用的模块。


感谢Wilt的评论。所以我在考虑为REST服务(即RESTModule)构建一个单一模块,以及多个控制器,每个实体组一个控制器,例如UserRestController(用于用户信息),SalesRestController(用于销售信息),InvoiceRestController(用于发票),等等...这样做有意义吗? - Mendes
是的,这很有道理。在Apigility中,您可以使用资源侦听器,在这种情况下,每个实体类型都会有一个“ResourceListener”。集合和单例都在同一个控制器/侦听器中处理。 - Wilt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接