私は、他人が使うためのAPIを構築しています。これはユーザーがいくつかのデータとして渡す単純な十分なJson要求です。apiをサービスとして構築する
私が気に入っているのは、私たちのAPIを保護し、ユーザーをオンまたはオフにすることができる何らかのユーザーシステムを持っていることです。
これをRailsで行うにはどうすればよいでしょうか?私はそれが要求を遅くしたくない。多分私はそれをやっていく方法を見ることができますが、他の人の意見を聞くのはすばらしいことです。
おかげ
私は、他人が使うためのAPIを構築しています。これはユーザーがいくつかのデータとして渡す単純な十分なJson要求です。apiをサービスとして構築する
私が気に入っているのは、私たちのAPIを保護し、ユーザーをオンまたはオフにすることができる何らかのユーザーシステムを持っていることです。
これをRailsで行うにはどうすればよいでしょうか?私はそれが要求を遅くしたくない。多分私はそれをやっていく方法を見ることができますが、他の人の意見を聞くのはすばらしいことです。
おかげ
私は(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
最後の注意 - 私は最近、APIを構築するためのブドウのライブラリを使用していました。私はそれがかなりうまくいったと思って、それは私たちのニーズに大きく貢献しました。私はバージョンAPIに提供した機能が特に好きです。詳細はこちら:https://github.com/intridea/grape/wiki
もう1つの方法は、3tale(http://www.3scale.net)を使用することです - トラフィックの上限まで自由ですが、すべてのキー管理、ユーザー、ドキュメントなどを処理し、ルビーライブラリを使用している場合は、コードにドロップすることができます。 (他のライブラリはここにあります:https://support.3scale.net/libraries)。
ありがとうございます - 私はオーバーヘッドについてちょっと心配しています - おそらくバックグラウンドジョブへのログインを助けるかもしれませんか? –
私は最初にそれを稼働させて、それからあなたが言っているようにそれを仕事に押し付けるでしょう。私はジョブ処理のためにresqueを使用する可能性が高いです。 –
ありがとう!私はこれを行こう! –