构建api即服务

时间:2012-05-06 12:32:07

标签: ruby-on-rails api

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

我喜欢的是保护我们的api并拥有某种用户系统,我们可以打开和关闭用户,我们可以记录每个用户提出的请求数量。

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

由于

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我发现以下设置有效:

  • 为每个api用户创建一个用户帐户。
  • 配置令牌验证的设计
  • 将令牌身份验证配置设置为要求使用每个请求提交令牌

这将允许您启用和禁用单个用户以及跟踪发出呼叫的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