2012-05-06 12 views
2

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

我最喜欢的就是保护我们的api并拥有某种用户系统,我们可以开启和关闭用户,并且我们可以记录每个用户有多少请求。

在Rails中这样做的最好方法是什么?我不希望它放慢请求速度。我可以看到使用设计的方式,但听到其他人的意见会很好。

感谢

回答

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 

最后要注意的 - 我最近使用的葡萄库,用于构建了一个API。我认为它做得很好,它对我们的需求非常好。我特别喜欢它提供给版本API的能力。详细信息在这里:https://github.com/intridea/grape/wiki

+0

谢谢 - 我有点担心开销 - 可能将日志记录推入后台作业可能有帮助吗? –

+0

我会先运行它,然后在那之后,可能会像你所说的那样把它推到一份工作上。我可能会使用resque进行作业处理。 –

+0

谢谢!我会放弃这一点! –

1

另一种方式是使用3scale(http://www.3scale.net) - 它是免费的流量上限,但处理所有的关键管理,用户,文档等,并有红宝石库,如果你使用rails,你可以放入代码中。 (其他库在这里:https://support.3scale.net/libraries)。