托管在多个服务器上的REST API

时间:2016-12-06 20:31:34

标签: php rest api slim

我遇到了一个需要帮助的问题(我之前从未遇到过这个问题,我找不到任何先前的相关问题)。

php中的应用程序托管在名为01.example.com, 02.example.com

的不同服务器上

现在,有许多客户端使用此应用程序(用PHP编写的软件即服务),每个客户端都有自己的数据库托管在一个特定的服务器上 - 客户端数据库存在于01.example.com和客户端B数据库存在于02.example.com(哪个客户端属于哪个服务器存储在共享数据库中)

我想创建一个包含http://HOST/api/resourceshttp://01.example.com/api/resourceshttp://02.example.com/api/resources)等网址的REST API

如何使api URL / URI独立于主机(http://example.com/api/resources)?

我可以想到几个解决方案 -

  1. 收到第一个请求后,从共享数据库中获取客户端的服务器位置,然后发送重定向。
  2. 或者在使用http://01.example.com/api/resources等REST时请客户端使用服务器特定的URL / URI。 (但是当客户端迁移到不同的服务器时,他们的代码将会中断,直到他们将URL更改为新服务器)。
  3. 这可能听起来令人困惑(因为它对我也是如此),我发现很难为这种情况设计解决方案。

1 个答案:

答案 0 :(得分:0)

您可以在URL中添加应用程序ID(或客户端ID或您的标识符以选择数据库),例如http://example.com/1/api/resourceshttp://example.com/2/api/resources并通过NGINX,haproxy,F5或任何其他代理或路由器重定向所有HTTP请求。问题是每次迁移应用程序时都必须重新配置代理。

通常,如果您可以将所有这些数据库合并到一个数据库中,您将节省很多麻烦。 如果出于性能原因分离了数据库,请考虑对所有只读请求使用readonly slave。

更多REST API服务器指南:http://example.com/1/api/resources