在销售引擎中实现Netflix的FastJson Api(第1部分)

本周,我不得不使用Netflix的新FastJson api作为序列化程序来构建一个api,该api公开了数据库中的SalesEngine数据。 这包括构建单一职责控制器,以为复杂的Active-Record商业智能查询提供经过精心设计和版本控制的API。 今天,我将简要概述什么是Fast_JsonApi以及如何在构建用于处理复杂数据库查询的api中使用它。


通常,根据我所知,使用Rails构建API时,将使用Active Model Serializer,以便仅用几行简单的代码即可显示Json响应中红宝石对象的关联。 直到Netflix决定创建自己的序列化器Fast_JsonApi之前,AMS一直是标准。 这个项目就是我们使用的,但是为什么呢? 因为太快了!

它是为NETFLIX的性能而设计的,显然它比Active Model Serializer快25倍,并且当您处理Netflix处理性能的数据非常关键时,当我听到这样的信息时,我真的很奇怪为什么人们认为Rails是死。 您拥有全球最大的一些公司在Rails上运行,他们似乎对改善Rails感兴趣。 而且很容易实现…

Fast_JsonApi是全新的,并且提供的文档很棒。 实施,安装几个gem并以某种方式构造您的控制器并完成BOOM并不需要很长时间,我对使用新的东西感到非常兴奋。 我好奇地进入了这个项目,我想知道如何构建一个显示ActiveRecord关联的API。 以下是一些我不得不编写的Active Record查询。

对于这个项目,我很难绕过商业智能,虽然进行了一些相当复杂的计算,但是学习绘制关系数据库图最有帮助。 在学习如何做之前,activerecord查询似乎是一件可怕的大事,太大了以至于无法处理。 我不知道如何将这些查询分成更小的部分。 在我决定要使用它之后,FactoryBot最终节省了我很多时间。

测试这些查询似乎令人生畏,但是我采用了相同的方法来弄清楚如何将这些测试分解为更小,更易于管理的部分。 对我来说,第一步是建立工厂,为我的测试套件创建数据库对象。

我认为那是我最喜欢的东西,这是我能够分解活动记录查询并加快测试速度所获得的信心。 并弄清楚如何使用FactoryBot。 我想在这个项目中遵循“测试驱动开发”的原则,这里有很多表和关联,而手动创建种子数据会很疯狂。 学习如何自动播种测试数据在节省时间方面非常有用……

在下一篇文章的第一部分就是这样,我将详细介绍为Fast_JsonApi设置的实际控制器。