2016-11-10 101 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

您的要求就是這樣,你沒有別的選擇,只能去一個混搭(除非你能說服API開發兩個API相結合)。

你可以,但是,選擇進行混搭服務具有低延遲成本到您的應用程序之間的站在抽象出混搭的邏輯,反之,你可以選擇使用自定義方式對本作語言一些工作來編程你的應用程序。這兩個選項都可以通過Ballerina進行調整,我已經寫了一篇文章here顯示了使用它的容易程度。