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

Php 寻求移动客户端-服务器应用程序策略的建议,php,api,rest,mobile,middleware,Php,Api,Rest,Mobile,Middleware,我正在就我未来某个项目的以下计划寻求建议 大局 我想制作一个移动客户端(iOS、Android、Windows Phone等),从我的网站查询(读/写)数据库并显示结果 加上其他一些功能 我知道从客户机直接访问数据库(绕过web服务器)是个坏主意,尤其是在internet上。我认为大多数共享网络托管计划无论如何都禁止这样做。这是我想要的解决方案 移动客户端通过API调用向Web服务器发送数据 Web服务器处理RESTAPI调用并查询数据库。Web服务器充当移动客户端和数据库服务器之间的中

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

  • 大局
    • 我想制作一个移动客户端(iOS、Android、Windows Phone等),从我的网站查询(读/写)数据库并显示结果
    • 加上其他一些功能
我知道从客户机直接访问数据库(绕过web服务器)是个坏主意,尤其是在internet上。我认为大多数共享网络托管计划无论如何都禁止这样做。这是我想要的解决方案

  • 移动客户端通过API调用向Web服务器发送数据
  • Web服务器处理RESTAPI调用并查询数据库。Web服务器充当移动客户端和数据库服务器之间的中间件
  • Web服务器接收来自DB查询的结果,并将其传递给移动客户端
  • 移动客户端在客户端显示/操作数据
  • 我使用API的经验仅限于使用Twitter、Instagram和谷歌购物API。根据我的经验,似乎最好在移动设备和Web服务器之间以JSON格式传输数据

    现在,我关心的是

  • 如何确保只有登录的用户才能使用API?OAuth是解决方案吗
  • 对于RESTAPI,如果它是RESTful的,是否更好
  • 该网站目前的环境是与PHP和MySQL共享主机,尽管我正在考虑将来将其转移到基于云的服务。我计划使用CodeIgniter或CakePHP或Apify实现中间件

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


    提前感谢。

    对于您正在寻找的内容,REST可能是最好的体系结构。你越是休息,就越好

    OAuth是一个授权协议,它处理哪些网站有权使用您的凭据。授权不同于身份验证,尽管可以使用另一方的授权来确保身份验证

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

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

    对于自己的身份验证,这是一个很好的选择:它易于实现,许多库已经支持它,并且在大多数情况下都足够安全


    避免在PHP中使用会话和cookie。REST是无状态的,这些特性在服务器上充满了客户机状态

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

    注意缓存头,如
    Expires
    ETag
    Last Modified
    。它们提高了API的整体性能,您可以设置反向代理(服务器和客户机之间的中间件),为您缓存内容

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

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


    看一看,然后。这些都是REST API的好工具。

    您的第一个问题值得商榷。你的第二个问题没有意义。也许你是指HTTP API,如果它是RESTful的是否更好?在这种情况下,它也是有争议的。