2016-11-10 31 views
0

私はAPI操作を呼び出してオブジェクトのリストを取得し、そのリスト内の各オブジェクトに対して別のAPI操作を呼び出してそのオブジェクトの追加の詳細を取得し、オブジェクト。目標は、必要なすべてのプロパティ(または詳細)を持つオブジェクトのリストを返すことです。以下の例では、/allObjects呼び出しは、2つのプロパティ - idと​​を持つすべてのオブジェクトのリストを取得します。しかし、私のアプリケーションは、3つのプロパティ、id、​​とk4が必要です。そこで、別のAPIメソッドを呼び出して、k4プロパティを含む各オブジェクトの詳細情報を取得します。その詳細なプロパティを元の結果セットのオブジェクトにコピーし、 "豊富な"結果セットを返します。しかし、これのレイテンシ・コストは高くなる可能性があります。アプリケーションをあまり遅くすることなくこれを達成する最善の方法は何ですか?現実の世界では、私は500〜2000のオブジェクトを扱っています。複数のAPI呼び出しの結果を結合する

GET /allObjects yields JSON results => 
{ 
    "data" : [ 
    { 
     "id" : "123", 
     "k1" : "v1" 
    }, { 
     "id" : "456", 
     "k1" : "v1" 
    } 
    ] 
} 

for (obj in results.data) { 
    GET /object/{obj.id} yields JSON result => 
    { 
    "data" : { 
     "id" : "123", 
     "k1" : "v1", 
     "k2" : "v2", 
     "k3" : "v3", 
     "k4" : "v4" 
    } 
    } 
    // Add k4 property to original result-set object, and assign 
    // it the value of the k4 property in the individual result object. 
    obj.k4 = result.data.k4; 
} 

return results.data; 

答えて

1

あなたの要件は、あなたが(あなたが2つのAPIを組み合わせるためにAPIの開発者を納得させることができない限り)マッシュアップのために行くが、他のオプションを持っていないようなものです。

待ち時間の短いコードを使用してマッシュアップサービスを作成することを選択して、マッシュアップロジックを抽象化するためにアプリケーション間に置くことができます。逆に、カスタム化された言語を使用することもできますあなたのアプリケーションをプログラムする仕事の種類。これらのオプションは両方ともBallerinaで対応できます。私は投稿を書いてhereと書いてあります。

関連する問題