如何创建私有和 public API 架构

How do I create a private and public API architecture

我分配了一个项目,我们已经有了一个 运行 网站,我们的一位客户希望能够从该网站跟踪统计信息。 我们希望在完成开发后立即将其提供给所有客户。请注意,每个 'client' 都有自己的 'subdomain' 这样说。例如。 www.website.com/client1 , www.website.com/client2 等。我们希望分别跟踪每个客户端的使用情况。

我们将需要根据我们自己平台的使用情况创建统计数据,提取由 Google Analytics 注册的数据,还提取来自第三方的数据,他们将由 API 他们自己的(他们有第 3 方解决方案,使用可通过我们的 API 访问的数据)。 所有这些数据都需要在带有图形和表格的网页上显示。

我想确保我们从一开始就选择了正确的架构,以避免以后出现可扩展性问题。

最近开始阅读有关 Private 和 Public API 的内容。

目前,我们还没有另一个(内部)应用程序会使用我们自己的统计信息,它只是使用它的网站。但是为了能够在以后需要时进行扩展,并且另一个应用程序想要使用统计信息,我认为私有 API 将使我们受益匪浅。

为了让第3方可以使用我们选择让出的统计数据,我想做一个PublicAPI。

Private&Public API 是解决此问题的正确方法吗?

我一直困扰的问题之一是这些 API 的架构是什么样子的。大多数情况下,现在我们已经有了关于职位空缺数据的 public API。这个 'API' 基本上只是我们 CodeIgniter 解决方案中的一个 PHP class(控制器)。它通过其 URL 和 returns 一个带有结果的 JSON 对象被调用。 (例如 www.website.com/api/vacancy/xxx)

为了创建一个(适当的)私有 & public API solution/architecture。 API 是否应该从网站(CodeIgniter)中免费设置?对此有哪些常见的首选解决方案? 还是像现在这样将它保留在我们当前的平台上就可以了? (例如,人们通过 www.website.com/api/stats/xxx 调用统计数据 API?)

像架构这样的微服务几乎总是正确的,所以你最初的想法听起来很合理。这样做将使 api 独立扩展和部署成为可能,还可以帮助您避免对网站产生性能副作用(反之亦然)。如果您不想完成单体式应用程序,请注意如何从新的 api 中访问主站点数据。 关于 API 我建议您实施像 oauth2 这样的协议,以实现您(可能)需要的灵活性。您也可以使用 swagger 来记录和测试您的 API。 我所说的一切可能对你有很大帮助,但首先你必须自己回答你是否真的需要深入研究,或者你只需​​要一个简单的解决方案。

我认为多租户是最好的选择。一般来说,多租户就是每个客户都有自己的数据库。数据是分开的。代码库相同并且已经存在。据我了解,该项目处于进行中状态。你不会重新设计和重写任何东西。