【问题标题】:Proper RESTful SOA approach in PHP applications?PHP 应用程序中正确的 RESTful SOA 方法?
【发布时间】:2012-07-26 12:12:01
【问题描述】:

所以,我最近阅读了很多关于 SOA 的文章,并试图实现一些有用的东西。我从一个简单的博客开始,创建了 RESTful API。到目前为止,一切都很好。它完美地工作。但是,在编写将使用 RESTful API 的 Web 界面时,我开始担心了。我不知道我是否做对了。

例如,Web 界面有一个管理面板。该管理面板通过 file_get_contents 和流选项向 API 发出 HTTP 请求。目前,API 是 localhost,Web 界面也是如此,但整个过程有点慢。这是正确的吗?这是实现 SOA 的正确方法吗?此外,我正在处理少量重复代码以进行验证。我应该在哪里验证数据?在 API 或 Web 界面中?最好的方法是什么?

欢迎使用提示、教程,特别是书籍。这是使用 Silex 实现的,构建在 Symfony 组件之上。

【问题讨论】:

  • 只是在这里大声思考。 Web 界面是通过 localhost 托管的,因此服务器上的 API 没有太大变化,只是请求数量通常会增加,并且没有互联网可以遍历。您的计算机甚至在离开网卡之前就将请求循环回给您。更值得深思。如果 API 在提供您自己的网页之外有任何用途,那么我将在 API 中构建数据验证。这样您就可以向 API 本身和网站的用户发布。

标签: php symfony1 soa silex


【解决方案1】:

这正是我的做法。尽管与 localhost 的连接一开始似乎是一种开销,但它是一项功能,因为您已准备好在任何地方部署 Web 界面应用程序并仍然使用您的 API,这可能在任何地方。当然,你会在上面放一些 SSL。

对于验证,您应该在 API 上进行验证并针对这些情况返回 HTTP status codes(例如,对于无效参数,“400 Bad Request”)。这样,任何其他客户端都可以解释来自 API 的响应并将其处理以显示他们想要的方式。对于您的 Web 界面,基于 HTTP 状态代码的漂亮的小错误消息。

您还面临哪些其他问题?另外,就一般的 SOA 架构而言,this book 非常好。

【讨论】:

  • 虽然我原则上同意,但如果您知道您的 API 与您的前端在同一个盒子上,您应该尝试在同一执行中调用它以节省引导资源和连接开销。显然,在可能的情况下,本地和远程之间的切换应该是无缝的。使用客户端对象来抽象它可以实现这一点。
猜你喜欢
  • 2012-01-25
  • 2010-11-24
  • 1970-01-01
  • 2018-06-27
  • 2012-10-27
  • 2018-10-18
  • 1970-01-01
  • 2017-01-04
  • 2015-10-17
相关资源
最近更新 更多