2012-06-04 47 views
1

我正在就以下计划寻求建议,这些计划是针对我的某个未来项目的。寻求移动客户端 - 服务器应用程序策略的建议

  • 大图片
    • 我想制作一个移动客户端(的iOS,安卓,Windows手机等)将查询(读/写)从我的网站数据库并显示其结果。
    • 加上其他几个功能...

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

  1. 移动客户端通过API调用向web服务器发送数据。
  2. Web服务器处理REST API调用并查询数据库。网络服务器作为移动客户端和数据库服务器之间的中间件。
  3. 网络服务器接收来自数据库查询的结果并将它们传递给移动客户端。
  4. 移动客户端显示/处理客户端的数据。

我对API的使用经验仅限于Twitter,Instagram和Google Shopping API的使用。根据我的经验,以JSON格式在移动设备和网络服务器之间传输数据似乎是最好的。

现在,这里是我的关注...

  1. 我如何可以确保只有登录的用户可以使用该API? OAuth是解决方案吗?
  2. 对于REST API,如果它是RESTful,它会更好吗?

该网站的当前环境是与PHP和MySQL共享主机,但我想在未来将其转移到基于云的服务。我打算使用CodeIgniter或CakePHP或Apify实现中间件。

如果有人能评论我的计划或者提出比我头脑中的更好的选择,我将不胜感激。

在此先感谢。

+0

你的第一个问题是可以辩论的。你的第二个问题没有意义。也许你的意思是,对于HTTP API,如果它是RESTful,它会更好吗?在这种情况下,它也是有争议的。 – Herbert

回答

3

REST可能是您寻找的最佳架构。您获得的RESTful越多,效果越好。

OAuth是一个授权协议,它处理哪些网站有权使用您的凭证。 授权认证不同,但可以使用来自另一方的授权来确保认证。

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

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

对于自己的验证,HTTP Digest Auth是一个不错的选择:它很容易实现,很多库已经支持它,并且它在大多数情况下足够安全。


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

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

照顾缓存标题,如Expires,ETagLast-Modified。它们可以提高API的整体性能,并且可以设置一个反向代理(服务器和客户端之间的中间件),以便为您缓存内容。

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

JSON和XML都很容易处理和操作。有时JSON更好,有时候XML是。有关这些格式差异的更多信息,请参见this answer

看看Respect\Rest,VarnishFrapi。这些对于REST API来说是很棒的工具。

相关问题