Java 如何在Spring Boot应用程序中处理来自外部api的大响应

Java 如何在Spring Boot应用程序中处理来自外部api的大响应,java,spring-boot,Java,Spring Boot,在我们的spring boot应用程序中,我们出于某种目的调用外部API,它返回大约20mb的JSON数据作为响应。收到响应后,使用ObjectMapper将响应映射到POJO 我们使用RestTemplate调用API并接收响应 在Spring boot应用程序中处理大响应数据而不出现内存问题的最佳实践是什么 谢谢我想说有两种好方法: 避免使用返回如此多信息的API。就我个人而言,我认为REST端点应该遵循我们在代码中使用的相同规则,例如“单一责任原则”或“关注点分离”。示例:没有返回“完整

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

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

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


谢谢

我想说有两种好方法:

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

但话说回来:如果您的需求是通过一次调用返回所有数据,那么您就没有什么可以做的了。你可以考虑不使用对象映射来完成完整的响应。

我想到的只是在流上工作而不缓冲整个响应。