我调用API操作来获取对象列表,然后,对于该列表中的每个对象,我调用另一个API操作来获取该对象的附加详细信息并将这些详细信息添加到对象中。目标是返回一个包含我需要的所有属性(或详细信息)的对象列表。在下面的示例中,/allObjects
调用将获得具有2个属性(id
和k1
)的所有对象的列表。但是我的应用程序需要3个属性,id
, k1
和k4
。因此,我调用另一个API方法来获取每个对象的详细信息,其中包括k4
属性。我将该详细属性复制到原始结果集的对象中,并返回"丰富的"结果集。但是这样做的延迟成本可能很高。在不降低应用程序速度的情况下实现这一点的最佳方法是什么?在现实世界中,我要处理500-2000个对象。
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;
您的需求是这样的,您没有其他选择,只能选择混搭(除非您能说服API开发人员将这两个API结合起来)。
但是,您可以选择使用低延迟成本创建mashup服务,以便在应用程序之间抽象出mashup逻辑,相反,您可以选择使用为此类工作定制的语言来编程您的应用程序。这两个选项都可以适应Ballerina,我在这里写了一篇文章,展示了使用它是多么容易。