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