寻求移动客户端 - 服务器应用策略的建议

时间:2012-06-04 18:08:35

标签: php api rest mobile middleware

我正在寻求有关我的未来某个项目的以下计划的建议。

  • 大局
    • 我想制作一个移动客户端(iOS,Android,Windows Phone等),它将从我的网站查询(读/写)数据库并显示其结果。
    • 以及其他一些功能......

我知道直接从客户端访问数据库(绕过Web服务器)是一个坏主意,尤其是在互联网上。我认为大多数共享的虚拟主机计划无论如何都禁止这样做。所以这是我的预期解决方案......

  1. 移动客户端通过API调用将数据发送到网络服务器。
  2. Web服务器处理REST API调用并查询数据库。 Web服务器充当移动客户端和数据库服务器之间的中间件。
  3. 网络服务器从数据库查询中接收结果并将其传递给移动客户端。
  4. 移动客户端在客户端显示/操作数据。
  5. 我使用API​​的经验仅限于使用Twitter,Instagram和Google购物API。根据我的经验,最好以JSON格式在移动设备和网络服务器之间传输数据。

    现在,这是我的担忧......

    1. 如何确保只有登录用户才能使用API​​? OAuth是解决方案吗?
    2. 对于REST API,如果它是RESTful会更好吗?
    3. 该网站的当前环境是与PHP和MySQL共享托管,但我想将来将其转移到基于云的服务。我打算使用CodeIgniter或CakePHP或Apify来实现中间件。

      如果有人能够批评我的上述计划或提出比我脑子里更好的替代方案,我将不胜感激。

      提前致谢。

1 个答案:

答案 0 :(得分:3)

REST可能是您正在寻找的最佳架构。你获得的RESTful越多越好。

OAuth是一种授权协议,用于处理哪些网站有权使用您的凭据。 授权身份验证不同,但可以使用其他方的授权来确保身份验证。

OAuth的选择取决于您正在构建的服务。例如,如果您的应用程序基于Twitter,则使用Twitter OAuth进行身份验证是有意义的。

如果您的服务将提供自己的凭据,并且每个用户都有自己的用户名/密码,OAuth可能不是最佳选择。在这种情况下,您需要设置OAuth客户端和OAuth服务器,这是不必要的。

对于自己的身份验证,HTTP Digest Auth是一个不错的选择:实现起来很简单,很多库已经支持它,并且对大多数情况来说它足够安全。


避免PHP中的会话和cookie。 REST是无状态的,并且这些功能在服务器上充满了客户端状态。

如果有一天您需要将服务扩展到更多服务器,那么在它们之间同步会话是很痛苦的。

照顾ExpiresETagLast-Modified等缓存标头。它们可以提高API的整体性能,您可以设置反向代理(服务器和客户端之间的中间件),可以为您缓存内容。

API上的公共数据不应要求身份验证。缓存经过身份验证的数据时,无法在不同用户之间共享此缓存。可以共享公共数据缓存。

JSON和XML都易于处理和操作。有时JSON更好,有时候是XML。有关这些格式差异的详细信息,请参阅this answer

查看Respect\RestVarnishFrapi。这些是REST API的绝佳工具。