【问题标题】:seeking advise for a mobile client-server application strategy寻求移动客户端-服务器应用策略的建议
【发布时间】:2012-06-04 18:08:34
【问题描述】:

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

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

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

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

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

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

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

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

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

提前致谢。

【问题讨论】:

  • 您的第一个问题有待商榷。你的第二个问题没有意义。也许您的意思是对于 HTTP API,如果它是 RESTful 会更好吗?,在这种情况下,它也值得商榷。

标签: php api rest mobile middleware


【解决方案1】:

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 的绝佳工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多