2015-10-10 13 views
8

は、私は、Web applicatons /サービスを考えてみましょう。今私が必要とするのは、異なるAPIの変更のためにアプリケーションを購読することです。 アプリケーションは、変更に関する背景作業を行います。APIフック/コールバックのベストプラクティス?いくつかのリソース(簡単なCRUD操作)を管理するために使用される</p> <ul> <li><em>API</em></li> <li>セット<em>の応用</em></li> </ul> <p><em>API</em>:


私はコールバックのアイデアを思いつきました。したがって、のアプリケーションは、のoauthのoriseとポストのAPIコールバックの設定です。

私はこの設定は次のようになりますことを考える:

{ 
    'callback_url': 'http://3rdpartyservice.com/callback', 
    'resources': ['foo1', 'foo2'], 
    'ref_data':  { 'token': 'abcd1234' } 
} 
  • リソースサードパーティのサービスは
  • ref_dataに興味を持っているリソースの配列は、サードパーティのカスタムJSONです使用方法(例:認証の場合)

APIは、callback_urlにリクエストを送信します。このリクエストには、リソースデータ、アクション(作成/更新/削除)とref_dataが含まれます。

ここでは、サードパーティのクライアントがこのようなコールバックを設定できるようにするためにこれを一般化することを意図しています。


そこで質問は以下のとおりです。

  1. は、任意のベストプラクティスはありますか?
  2. セキュリティの潜在的な問題はどうですか?
  3. ウェブ上に実際の例がありますか?

のTx

答えて

3

はサービスフックWebHooksとして、あるいは非常に似てね。

Web Hooks on GitHubをチェックして、彼らが何であり、どのように機能しているかを確認してください。最後のalinea Service Hooksも参照してください。これは、githubがこれらのWebHookをどのように処理するかを説明しています。これは、あなたのアプリケーションに似ています。 OAuthはなぜ、どのように行われるのかを説明します。

Webhooks, REST and the Open WebAPI User Experienceも参照してください。

RestHooksもあります。

+0

ありがとうございます。右の名前と良い例を指しています。 – nsave

2

この要件の一般的な解決策は、通常、「パブリッシュ/サブスクライブ」と呼ばれます。いくつかの例としてGoogleに「subscribe RESTを公開する」という数十のソリューションがあります。 「Enterprise Integration Patterns」と読むこともできます。

この種のソリューションでは、「リアルタイム対キュー」が重要な課題です。

例えば、100万のクライアントを持つAPIをお持ちの場合、同じイベントに関心を持つすべてのクライアントは、そのアプリケーションが要求する時間枠内ですべてのクライアントにリアルタイムでアクセスできることを保証することはできません。また、ネットワークが遠ざかったり、クライアントが一時的にダウンしたりするのを心配する必要があります。この場合、アプリケーションはイベントキューを定義し、クライアントは関心のあるイベントのキューを探します。そのルートを終了すると、おそらく、ビルドするのではなく既製のソフトウェアを使用することになりますあなた自身の。 Apache Camelは良いオープンソース実装です。

たとえば、3rdpartyservice.comにアクセスできない場合はどうなりますか?または、がfoo1に更新を送信するときにエラーをスローしますが、foo2には送信しない場合は、あるいは、http://3rdpartyservice.com/があなたが慣れていたものとは異なるOAuthのフレーバーを使用している場合ですか? http://3rdpartyservice.com/は、ハッカーではなく、アップデートを投稿しているのですか?

あなたの選択は、機能的なものではなく機能的なものではなく、機能的なものではなく、機能的なものではなく、実際の使用方法よりも重要です。パラメータ、およびそれが「リソースベース」なのか他の何らかのプロトコルなのかを判断します。

+0

ありがとうございます。これらは、私が提案したいと思った最も興味深い質問です:)私の答え:1-2)3rdパーティがタイムアウト内に '200 'で応答しない場合、イベントはキューに追加されるべきです。 3)その意味を明確にしていない。クライアントは私のOAuthスキームを採用する必要があります。 4) 'ref_data'が責任を負うものです。要求がハッカーからのものではないことを保証する要求に署名するためのより良いソリューションがありますか? – nsave

+0

これらの問題はすべてCamelのようなフレームワークで既に解決されています。あなた自身で実装することで多くのことを学ぶかもしれませんが、単に作業用のソフトウェアを入手したいのであれば、 –

+0

実際、稼働時間、通知の保証、配送の保証などは重要ですが、選択したソリューションとはほとんど関係ありません。これらは、_Camel_と_WebHooks_または他のものによって行うことができます。 – Verhagen

関連する問題