【问题标题】:Combining results of multiple API calls组合多个 API 调用的结果
【发布时间】:2016-11-10 17:31:19
【问题描述】:

我正在调用 API 操作来获取对象列表,然后,对于该列表中的每个对象,我正在调用另一个 API 操作来获取该对象的其他详细信息并将这些详细信息添加到对象中。目标是返回包含我需要的所有属性(或详细信息)的对象列表。在下面的示例中,/allObjects 调用将获得具有 2 个属性的所有对象的列表 - idk1。但我的应用程序需要 3 个属性,idk1k4。所以我调用另一个 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 mashup


    【解决方案1】:

    您的要求是,您别无选择,只能进行混搭(除非您可以说服 API 开发人员将这两个 API 结合起来)。

    但是,您可以选择创建一个具有低延迟成本的混搭服务来站在您的应用程序之间以抽象出混搭逻辑,相反,您可以选择使用一种语言为此类工作定制以对您的应用程序进行编程。这两个选项都可以使用Ballerina,我写了一篇帖子here,展示了使用它是多么容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 2013-04-24
      • 2019-01-06
      相关资源
      最近更新 更多