【问题标题】:REST API hosted on multiple servers托管在多台服务器上的 REST API
【发布时间】:2016-12-14 23:45:12
【问题描述】:

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

php 中的应用程序托管在名为 01.example.com, 02.example.com 的不同服务器上

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

我想创建一个带有 http://HOST/api/resources (http://01.example.com/api/resources, http://02.example.com/api/resources) 等 URL 的 REST API

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

我能想到几个解决方案 -

  1. 收到第一个请求时,从共享数据库中获取客户端的服务器位置,然后发送重定向。
  2. 或者在使用像http://01.example.com/api/resources 这样的REST 时要求客户端使用用户服务器特定的URL/URI。 (但是当客户端迁移到不同的服务器时,他们的代码会中断,直到他们将 URL 更改为新服务器)

这听起来可能令人困惑(对我来说也是如此),我发现很难为这种情况设计解决方案。

【问题讨论】:

  • 您能想到的两个选项是唯一可能的选项...

标签: php rest api slim


【解决方案1】:

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

一般来说,如果您可以将所有这些数据库合并到一个数据库中,您会省去很多麻烦。 如果出于性能原因分离数据库,请考虑对所有只读请求使用只读从属。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2016-02-19
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多