Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 有没有办法限制我从回复中获得的数据量?_Node.js_Axios - Fatal编程技术网

Node.js 有没有办法限制我从回复中获得的数据量?

Node.js 有没有办法限制我从回复中获得的数据量?,node.js,axios,Node.js,Axios,您好,我有一个小挑战要做,我必须显示一些从api获得的数据。主页面将显示前20个结果,单击按钮将从页面中再添加20个结果 我得到的api调用返回一个大约有1500个元素的数组,api没有一个参数来限制数组中元素的数量,所以我的问题是,我是否可以使用axios以某种方式限制它,或者我应该只提取所有这些元素并显示它们 这是api:您的问题有两个答案 简短的回答是: 就您而言,在API端实现分页之前,您无能为力 第二个答案是: 您可以像这样使用http模块处理它 这将中止大约10000字节的请求,因为

您好,我有一个小挑战要做,我必须显示一些从api获得的数据。主页面将显示前20个结果,单击按钮将从页面中再添加20个结果

我得到的api调用返回一个大约有1500个元素的数组,api没有一个参数来限制数组中元素的数量,所以我的问题是,我是否可以使用
axios
以某种方式限制它,或者我应该只提取所有这些元素并显示它们


这是api:

您的问题有两个答案

简短的回答是

就您而言,在API端实现分页之前,您无能为力

第二个答案是:

您可以像这样使用http模块处理它

这将中止大约10000字节的请求,因为数据以不同大小的块的形式到达


由于API没有限制结果数量的参数,因此您负责修改响应

因为您使用的是Axios,所以您可以使用一个命令来执行此操作,以便在到达应用程序之前修改响应


你可能想考虑最好的地方在哪里做这件事。如果您允许将完整响应返回到应用程序,然后将其存储在某个位置,那么在用户请求时返回下一页(共20个结果)可能会更容易,而不是重复调用API。

您能和我们一起剪切API吗?@DanStarns在帖子中添加了链接。我在文档中找不到任何可以限制我从电话中获得的数据量的内容。是的,这就是我正在做的。当应用程序加载并在前端显示阵列的一部分时,我将所有内容都存储在一个阵列中。我猜带有响应拦截器的示例可能不在我这个挑战的范围之内,但我会看一看。我只是担心他们可能会说,即使响应大小在100kb左右,也无法从一开始就获取所有数据。这是一个可以理解的问题,但考虑到API的限制,你别无选择,听起来你正在采取适当的行动。是的,这是我想象的,提交挑战后,我会告诉首席技术官我对这个问题的担忧。谢谢你帮我整理一下。很好,我来看看。
 http.request(opts, function(response) {
    var request = this;
    console.log("Content-length: ", response.headers['content-length']);
    var str = '';
    response.on('data', function (chunk) {
      str += chunk;
      if (str.length > 10000)
      {
        request.abort();
      }
    });
    response.on('end', function() {
      console.log('done', str.length);
      ...
    });
  }).end();