2016-11-10 99 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显示了使用它的容易程度。