【问题标题】:Symfony2 website and RESTful APISymfony2 网站和 RESTful API
【发布时间】:2012-09-27 19:59:26
【问题描述】:

我目前正在开发一个网络应用程序,该应用程序严重依赖移动和桌面客户端向网络服务器咨询信息。这可以很好地完成,使 RESTful API 可用于处理此问题。所以我的想法是让应用程序充当“平台”,在幕后处理所有真实的业务逻辑和数据库信息。

我的计划是让平台使用 symfony2 和 OAuth 2.0 身份验证机制,并结合 RESTful Web 服务。

现在我真正的困境出现在网站组件上。理想情况下,我想将该网站视为另一个向该 REST 平台询问信息的客户端,并将其与平台本身完全分开。

为了更清楚一点,假设我们正在使用这种架构制作博客,因此会有一个“平台/后端”,提供用于列出文章的休息服务,例如:/articles/5。这在后端,使用 symfony2/doctrine 意味着应用程序有一个 Article 模型类,这些可以从数据库中请求。一个简单的控制器查询文章编号 5 并以 JSON 格式返回所有信息。

现在这个例子中的网站,可以做简单的事情,也有一个文章实体,直接查询数据库,但我认为如果它可以通过它的 REST api 与平台对话并使用它会更干净该信息作为实体的“后端”。

所以真正的问题是,有没有使用 symfony2 支持这种设计?实体是否依赖 REST api 进行 CRUD 操作?或者我最好将平台/网站变成一个单一的东西并与所有通用实体共享一个“CoreBundle”?

【问题讨论】:

  • 您找到解决方案了吗?我会感兴趣的。
  • 其实我做到了。我最终让网站成为另一个客户端并通过 http 请求从平台请求数据。我正在使用 guzzle(使用我自己的用于 symfony2 的 GuzzleBundle)发出请求并将 JSON 响应自动反序列化为实体。在 Web 端,我实际上有重复的实体,但没有任何原则映射,并且在某些情况下,后端的实际业务实体与前端所需的数据之间的实际数据不同。如果它对你有任何用处,我的 guzzle 包位于 github.com/xamado/guzzle-bundle
  • 谢谢!所以您实际上对您网站上的每个请求都有两个请求?这是我想避免的事情..

标签: web-services rest symfony


【解决方案1】:

Symfony 中没有任何东西可以阻止你做你想做的事。

在客户端,您可以使用Backbone.jsSpine.js

【讨论】:

  • 我想我忘了提到我希望网站本身也是一个 symfony2 项目,这就是我的问题发挥作用的地方,即如何处理实体实际上来自 REST api 的 symfony2 网站和不是,比方说,教义。
【解决方案2】:

看看 FosRestBundle,它可以让你更轻松地创建 api: https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/index.md

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 2014-01-13
    • 2014-07-31
    • 1970-01-01
    相关资源
    最近更新 更多