2

我正在构建一个 api 供其他人使用。这是一个足够简单的 Json 请求,用户作为一些数据传递,我们将一些返回。

我想要的是保护我们的 api 并拥有某种用户系统,我们可以在其中打开和关闭用户,我们可以记录每个用户发出的请求数。

在 Rails 中执行此操作的最佳方法是什么?我不希望它减慢请求。我可以看到使用设计的方法,但很高兴听到其他人的意见。

谢谢

4

2 回答 2

1

另一种方法是使用 3scale (http://www.3scale.net) - 它可以免费使用流量上限,但可以处理所有密钥管理、用户、文档等,并且有一个 ruby​​ 库,如果您可以将其放入您的代码中你正在使用导轨。(其他库在这里: https: //support.3scale.net/libraries)。

于 2012-05-07T18:13:15.960 回答
0

在使用 devise 的令牌身份验证功能之前,我已经完成了此操作(请参阅https://github.com/plataformatec/devise)。

我发现以下设置有效:

  • 为每个 api 用户创建一个用户帐户。
  • 为令牌身份验证配置设备
  • 设置 Token Authentication 配置以要求每次请求都提交令牌。

这将允许您启用和禁用单个用户,以及将每个请求跟踪回进行调用的 api 用户。

如果您真的对跟踪使用情况感兴趣,您可能还需要考虑创建一个数据库表来跟踪所有 api 请求。这可以设置到belong_tousers 表,以便您轻松找到来自不同用户的所有请求(例如,@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

于 2012-05-06T12:43:11.783 回答