2012-05-06 15 views
2

私は、他人が使うためのAPIを構築しています。これはユーザーがいくつかのデータとして渡す単純な十分なJson要求です。apiをサービスとして構築する

私が気に入っているのは、私たちのAPIを保護し、ユーザーをオンまたはオフにすることができる何らかのユーザーシステムを持っていることです。

これをRailsで行うにはどうすればよいでしょうか?私はそれが要求を遅くしたくない。多分私はそれをやっていく方法を見ることができますが、他の人の意見を聞くのはすばらしいことです。

おかげ

答えて

0

私は(https://github.com/plataformatec/deviseを参照)工夫のトークン認証機能を使用する前にこれをやりました。

私は次のセットアップが動作しますが見つかりました:

  • は、各APIのユーザーのユーザーアカウントを作成します。
  • 設定
  • トークン認証のために考案各要求に提出するトークンを要求するようにトークン認証の設定を設定します。

これにより、個々のユーザーを有効または無効にしたり、呼び出しを行った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 

最後の注意 - 私は最近、APIを構築するためのブドウのライブラリを使用していました。私はそれがかなりうまくいったと思って、それは私たちのニーズに大きく貢献しました。私はバージョンAPIに提供した機能が特に好きです。詳細はこちら:https://github.com/intridea/grape/wiki

+0

ありがとうございます - 私はオーバーヘッドについてちょっと心配しています - おそらくバックグラウンドジョブへのログインを助けるかもしれませんか? –

+0

私は最初にそれを稼働させて、それからあなたが言っているようにそれを仕事に押し付けるでしょう。私はジョブ処理のためにresqueを使用する可能性が高いです。 –

+0

ありがとう!私はこれを行こう! –

1

もう1つの方法は、3tale(http://www.3scale.net)を使用することです - トラフィックの上限まで自由ですが、すべてのキー管理、ユーザー、ドキュメントなどを処理し、ルビーライブラリを使用している場合は、コードにドロップすることができます。 (他のライブラリはここにあります:https://support.3scale.net/libraries)。

関連する問題