我正在构建一个API供其他人使用。这是一个足够简单的Json请求,用户传递一些数据,然后我们传回一些。构建一个API作为服务
我最喜欢的就是保护我们的api并拥有某种用户系统,我们可以开启和关闭用户,并且我们可以记录每个用户有多少请求。
在Rails中这样做的最好方法是什么?我不希望它放慢请求速度。我可以看到使用设计的方式,但听到其他人的意见会很好。
感谢
我正在构建一个API供其他人使用。这是一个足够简单的Json请求,用户传递一些数据,然后我们传回一些。构建一个API作为服务
我最喜欢的就是保护我们的api并拥有某种用户系统,我们可以开启和关闭用户,并且我们可以记录每个用户有多少请求。
在Rails中这样做的最好方法是什么?我不希望它放慢请求速度。我可以看到使用设计的方式,但听到其他人的意见会很好。
感谢
我用色器件令牌认证功能(见https://github.com/plataformatec/devise)这样做过。
我发现下面的安装方法的效果:
这将允许您启用和禁用单个用户以及跟踪每个请求回到发出呼叫的api用户。
如果您真的有兴趣跟踪使用情况,您可能还需要考虑创建一个数据库表,以跟踪所有api请求。这可以设置为belong_to
用户表,以便您轻松找到来自不同用户的所有请求(例如,@user.api_requests
)。
用户做出将所有请求的计数:
@user.api_requests.count
# or use a where clause to find how many of each type
@user.api_requests.where("api_request_type = ?", 'SomeAPICallType').count
最后要注意的 - 我最近使用的葡萄库,用于构建了一个API。我认为它做得很好,它对我们的需求非常好。我特别喜欢它提供给版本API的能力。详细信息在这里:https://github.com/intridea/grape/wiki
另一种方式是使用3scale(http://www.3scale.net) - 它是免费的流量上限,但处理所有的关键管理,用户,文档等,并有红宝石库,如果你使用rails,你可以放入代码中。 (其他库在这里:https://support.3scale.net/libraries)。
谢谢 - 我有点担心开销 - 可能将日志记录推入后台作业可能有帮助吗? –
我会先运行它,然后在那之后,可能会像你所说的那样把它推到一份工作上。我可能会使用resque进行作业处理。 –
谢谢!我会放弃这一点! –