如何对 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
然后,ios 和 android 客户端应该可以通过发送 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