如何创建私有和公共API架构

时间:2019-01-26 13:33:47

标签: api architecture usage-statistics

我得到一个分配的项目,我们已经有一个正常运行的网站,并且我们的一位客户希望能够从该网站跟踪统计信息。 我们希望在完成开发后尽快将其提供给所有客户。请注意,每个“客户”都有自己的“子域”。例如。 www.website.com/client1,www.website.com/client2等。我们希望分别跟踪每个客户端的使用情况。

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

我想确保我们从一开始就选择正确的体系结构,以避免以后出现可伸缩性问题。

最近开始阅读有关私有和公共API的信息。

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

为了让第三方使用我们选择发布的统计数据,我正在考虑创建一个公共API。

私有和公共API是否是解决此问题的正确方法?

我遇到的一个问题是这些API的体系结构如何。通常,现在我们已经有了一个有关空缺数据的公共API。这个“ API”基本上只是我们CodeIgniter解决方案中的一个PHP类(控制器)。它通过其URL进行调用,并返回带有结果的JSON对象。 (例如www.website.com/api/vacancy/xxx)

为了创建(正确的)私有和公共API解决方案/体系结构。是否应该从网站(CodeIgniter)上免费设置API?常见的通用解决方案是什么? 还是按现在的方式将其保留在我们当前的平台中好吗? (例如,人们通过www.website.com/api/stats/xxx调用stats API吗?)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我认为多租户是最佳选择。一般来说,多租户是指每个客户都有自己的数据库。数据是分开的。代码库是相同的,并且已经存在。据我了解,该项目正在进行中。您无需重新设计和重写任何内容。