我正在构建一个 api 供其他人使用。这是一个足够简单的 Json 请求,用户作为一些数据传递,我们将一些返回。
我想要的是保护我们的 api 并拥有某种用户系统,我们可以在其中打开和关闭用户,我们可以记录每个用户发出的请求数。
在 Rails 中执行此操作的最佳方法是什么?我不希望它减慢请求。我可以看到使用设计的方法,但很高兴听到其他人的意见。
谢谢
我正在构建一个 api 供其他人使用。这是一个足够简单的 Json 请求,用户作为一些数据传递,我们将一些返回。
我想要的是保护我们的 api 并拥有某种用户系统,我们可以在其中打开和关闭用户,我们可以记录每个用户发出的请求数。
在 Rails 中执行此操作的最佳方法是什么?我不希望它减慢请求。我可以看到使用设计的方法,但很高兴听到其他人的意见。
谢谢
另一种方法是使用 3scale (http://www.3scale.net) - 它可以免费使用流量上限,但可以处理所有密钥管理、用户、文档等,并且有一个 ruby 库,如果您可以将其放入您的代码中你正在使用导轨。(其他库在这里: https: //support.3scale.net/libraries)。
在使用 devise 的令牌身份验证功能之前,我已经完成了此操作(请参阅https://github.com/plataformatec/devise)。
我发现以下设置有效:
这将允许您启用和禁用单个用户,以及将每个请求跟踪回进行调用的 api 用户。
如果您真的对跟踪使用情况感兴趣,您可能还需要考虑创建一个数据库表来跟踪所有 api 请求。这可以设置到belong_to
users 表,以便您轻松找到来自不同用户的所有请求(例如,@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