【问题标题】:How to handle large response from external api in Spring Boot application如何在 Spring Boot 应用程序中处理来自外部 api 的大响应
【发布时间】:2019-07-03 08:25:13
【问题描述】:

在我们的 Spring Boot 应用程序中,我们出于某种目的调用外部 API,它返回大约 20mb JSON 数据作为响应。收到响应后,我们使用 ObjectMapper 将响应映射到 POJO。

我们正在使用 RestTemplate 调用 API 并接收响应。

在 Spring Boot 应用程序中处理大型响应数据而不出现内存问题的最佳实践是什么?

谢谢

【问题讨论】:

  • 我唯一想到的就是在不缓冲整个响应的情况下处理流/
  • 有什么我可以添加到答案中以使其也值得投票吗?

标签: java spring-boot


【解决方案1】:

我想说有两种好方法:

  • 避免使用返回大量信息的 API。就个人而言,我认为 REST 端点应该遵循我们用于代码的相同规则,例如“单一责任原则”或“关注点分离”。示例:不是有一个返回“完整目录”(包含所有目录条目的所有详细信息)的 API,而是有两个 API:一个只检索目录中所有条目的 ID/名称,一个返回所有详细信息一个(或多个)条目。
  • 或者,正如用户 Antoniossss 在评论中所建议的那样:看看您是否可以避免使用“完整”响应,而是使用某种基于流的解决方案。

但是话虽如此:当您确实需要一次调用返回所有数据时,您无能为力。您可能考虑不使用对象映射来获得完整的响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    相关资源
    最近更新 更多