首页 > 解决方案 > 如何在 Spring Boot 应用程序中处理来自外部 api 的大响应

问题描述

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

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

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

谢谢

标签: javaspring-boot

解决方案


我想说有两种好方法:

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

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


推荐阅读