如何对 Zend Web 应用程序和 Zend JSON-RPC 服务器使用相同的“后端”代码?

Posted

技术标签:

【中文标题】如何对 Zend Web 应用程序和 Zend JSON-RPC 服务器使用相同的“后端”代码?【英文标题】:How to use the same "back end" code with both a Zend web app and a Zend JSON-RPC server? 【发布时间】:2011-12-20 11:02:45 【问题描述】:

我即将设计一个 Zend Web 应用程序,为了呈现它的视图,它将使用数据,这些数据也应该可以通过 JSON-RPC api 检索,用于移动原生应用程序。我想知道如何构建项目以保持这两个部分独立。 Web 应用程序应通过以下 URL 启动:

http://www.domainname.com

然后,iosandroid 客户端应该可以通过发送 post 请求来使用 JSON-RPC api

http://www.domainname.com/api/

web 应用程序和 api 是否应该是两个独立的 zend 应用程序?我对此持怀疑态度,因为它们将管理的数据基本相同,请求处理程序类和 webapp 的控制器将有一堆类似的代码来检索和操作要返回的数据。

有没有一种好的、干净和灵活的方式来为 JSON-RPC 服务器和 Web 应用程序使用相同的“后端”代码?

我想避免代码重复,但也要尽可能快地调用 api。

感谢任何愿意提供帮助的人!

【问题讨论】:

【参考方案1】:

您实际上可以很容易地做到这一点。

当控制器处理它时,使用...

if ($this->_request->isXmlHttpRequest())

     // Code here

如果您要保存数据,则过程可以相同。通常,您只需使用它来返回视图或 JSON。比如……

// Save the data here

if ($this->_request->isXmlHttpRequest())

     die(Zend_Json::encode(array('success' => true)));

else

     // View specific data here

我希望这会有所帮助并且有意义!

【讨论】:

谢谢,这很有帮助。由于我对 Zend 还不是 100% 满意,所以我也在寻求有关文件夹结构的建议。如果我想将 Web 应用程序和 api 保留在一个项目中,但使用两个不同的 url 访问它们怎么办? (请参考原始问题)我看到的所有教程都假设 Zend 应用程序只能通过 web_root 文件夹中的 index.php 访问。 对不起,错过了那部分!也许你可以制作一个插件来实现这一点?查看 Zend Framework MVC 控制器调度过程。您可能会编写一些东西来检查 URL 并相应地处理它。或者,您可以制作两个单独的模块?将 Web 应用程序所需的所有代码放在一个名为“api”的单独文件夹中。有很多方法可用。查看 Zend Controller 文档,它可能会有所启发。

以上是关于如何对 Zend Web 应用程序和 Zend JSON-RPC 服务器使用相同的“后端”代码?的主要内容,如果未能解决你的问题,请参考以下文章

Zend_Search_Lucene,如何通过网络共享索引存储文件夹

区别zend解密版本Zend Optimizer和Zend GuardLoader

在服务器上的 Zend Web 开发中显示应用程序错误

如何在一个 Zend_Form 中连续放置 2 个按钮

如何在 Xampp 上安装 Zend Guard Loader

如何在不安装 Zend 框架的情况下使用 Zend 库