我正在建立一个api供其他人使用。这是一个简单的Json请求,用户将其作为一些数据传递,然后我们传回一些。
我喜欢的是保护我们的api并拥有某种用户系统,我们可以打开和关闭用户,我们可以记录每个用户提出的请求数量。
在Rails中执行此操作的最佳方法是什么?我不希望它减慢请求速度。我可以看到使用设计的方法,但听到其他人的意见会很好。
由于
答案 0 :(得分:1)
另一种方法是使用3scale(http://www.3scale.net) - 它可以免费获得流量上限,但可以处理所有密钥管理,用户,文档等。还有一个ruby库,你可以放入如果你使用rails,你的代码。 (其他libs在这里:https://support.3scale.net/libraries)。
答案 1 :(得分:0)
在使用设计的令牌身份验证功能之前,我已经完成了这项工作(请参阅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
最后一点 - 我最近使用Grape库构建了一个API。我认为它做得很好,它对我们的需求非常有用。我特别喜欢它为版本API提供的能力。详细信息如下:https://github.com/intridea/grape/wiki