当前位置: 首页 > 知识库问答 >
问题:

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

司空健
2023-03-14

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

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

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

谢谢

共有1个答案

东典
2023-03-14

我想说有两种好方法:

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

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

 类似资料:
  • API响应一个JSON对象,该对象具有一个对象数组,如,其中包含我们需要处理的数据。问题是数组有1.000个对象,endpoint响应很慢,所以流式传输需要几秒钟才能完成,而我们的“博客”编程模型使用Apache HttpClient来消耗endpoint,杰克逊来序列化响应,我们等待为了获得完整的正文来解析保存数组的所有对象,而不是在每个元素到来时处理它们,节省了内存使用的时间,因为一旦处理了一

  • 问题内容: 我正在将现有的应用程序移植到Flux,并且对一个主题有些困惑。假设我有几个API端点,它们返回两级或三级嵌套对象。 例如,可能返回架构的JSON响应 如您所见,有各种各样的用户处于不同的嵌套级别: 如果我想在获取文章时随时使用新数据进行更新,则必须编写一个怪异的方法来检查文章API响应上的所有嵌套实体。而且,将存在很多重复,因为还有其他API端点具有不同的架构,有时文章嵌入在用户内部(

  • 问题内容: 我的网络服务返回一个JSON对象,如下所示 即,当我将此地址放入chrome浏览器中时,我可以到达上面。 我正在尝试在浏览器中阅读此内容,以便可以创建一个下拉选项…但是从以下代码开始我一无所获: 我总是在警报框中。我用fiddler2再次检查了Web服务请求/响应是否正常,我什至可以拦截Web服务和浏览器之间的json对象。 我也试过 我又得到了空。 我已经看过Ajax要求的json响

  • 问题内容: 我正在尝试使用正则表达式搜索网页,但出现以下错误: TypeError:无法在类似字节的对象上使用字符串模式 我知道为什么urllib.request.urlopen()返回一个字节流,因此,至少在我看来,re不知道要使用的编码。在这种情况下我该怎么办?有没有办法在urlrequest中指定编码方法,或者我需要自己重新编码字符串?如果是这样,我想做什么,我假设我应该从标题信息中读取编码

  • 问题内容: $scope.tempObject = {}; 我得到了回应,但没有得到外界。其显示。 如何访问或之后 问题答案: 但是,如果我想在回调后使用$ scope.tempObject,那么该如何使用它。? 您需要 链 从httpPromise。保存httpPromise并将该值 返回 到onFullfilled处理函数。 然后你外面 连锁 从httpPromise。 有关更多信息,请参阅《