假设我有一个提供某些服务的API。用户必须至少具有一个api密钥才能发出请求。可以说,您每月免费获得1,000个请求,如果您需要更多请求,则按月订阅。
您将如何使用mongodb存储此业务模型,并根据每月请求数应用费率限制?
我正在使用node.js
有很多方法可以解决这个问题,所以这里是我的2美分。
我使用Stripe(用于管理计划和付款处理)和MongoDb(用于存储与用户相关的数据)做了类似的事情。它可能不完全是您想要的,但可能会激发一些想法。
在MongoDB上
MongoDB将保留您的用户API请求计数。根据您的业务规则,此计数可用于接受/拒绝请求。
假设您在MongoDb(或类似产品)上有一个用户集合,则应做出规定以“计数”用户的成功请求。这可以是带有相关时间戳属性的简单计数器属性(这样您就可以知道何时应重置该属性,即一个月后)。除非您有正当的理由,否则避免计数失败的请求(即导致4XX或5XX响应的API请求)
基本上,在成功执行用户API请求后,检查计数器是否仍然有效(即在一个月内),然后增加计数-如果一个月过去了,则从0开始计数。您可以使用“$inc“操作符来增加数字,而不是自己增加。
关于它在MongoDB中的表示方式,可以是这样的(在用户文档中:)>
{ ... "apiUsage" : { "requestsThisMonth" : 850, "updatedAt": "2019-11-21T10:10:10.100Z" } }
在条带上
条带将用于记录一段时间内进行的支票数量,并相应地向用户收费。
Stripe提供了创建Pricing Plans的方法,然后可以将其与用户关联。在这种情况下,您可以使用分层定价
创建每月Metered Usage计划。您可以设置分层定价,以便前1000个单位(即API请求)免费(0.00美元)。一旦它们超过1000个单位,您就可以开始对其充电。一旦客户订阅了计划,就可以使用Stripe API来增加使用量。
高级别流量
这显然是过于简化的视图,但希望它能使您了解如何完成此操作。
Note