【问题标题】:Correct Approach to GET JSON Data From Multiple REST Endpoints从多个 REST 端点获取 JSON 数据的正确方法
【发布时间】:2019-04-01 19:37:34
【问题描述】:

因此,我正在尝试确定从现有 Web API 获取/解析 JSON 数据的最佳方式。

我的意思是,给定一个像这样的端点:

https://example.com/api/projects(不是真实的)

返回 JSON 结构如下:

{
    "count": 4424,
    "results": [
        {"id": 2718, "name": "fox", "location": "Omaha"}, 
        {"id": 2719, "name": "bear", "location": "Miami"}
    ]
}

然后我需要获取这些 id 值的列表,以便从使用项目 ID 的后续端点获取 JSON:

https://example.com/api/projects/[id]/resources(不是真实的)

并返回 JSON 结构如下:

{
    "quota_cpus": 2,
    "active_cpus": 1,
    "quota_memory": 16384,
    "active_memory": 0
}

我当时的想法是,我将使用 OKHTTP3 进行 REST 调用以检索项目 ID 并将它们存储在名为 Project 的 java 对象中。

然后我将遍历列表并进行另一个 REST 调用以检索每个单独项目的资源列表并将其存储在名为 ProjectResources 的新对象中。

我的问题是:

  • 这似乎是正确的方法吗?
  • 您会建议哪些更好的替代方案?
  • 我应该进行这些同步还是异步调用?

【问题讨论】:

  • 听起来你想要一个来自服务器的新端点,你控制着那个组件还是可以和它的维护者交谈?当然,你的方法会奏效,如果可以的话是异步的,但是你会浪费很多 http 调用
  • 不幸的是,我无法控制该组件,也无法与那些控制的人取得联系。我想考虑到这些限制,这是要采用的方法吗?

标签: java json rest okhttp3 endpoint


【解决方案1】:

这里是您的疑问的答案,

这似乎是正确的做法吗?

如果您只需要第一次呼叫响应中的 id,则将它们存储在 列表而不是项目

.

你会建议什么更好的选择?

由于第二次调用取决于第一次调用返回的 id 数量, 如果您进行异步调用会更好,这将改善执行 时间。

但是,如果您有权更改第二个端点,我建议 使其接受多个 id。

我应该进行这些同步还是异步调用?

您可以使用异步调用。 (例如使用ExecutorService)

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 2013-03-03
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多