Javascript 在Nodejs中,如何在不接收响应的情况下检测内容长度(响应大小)?
我正在使用nodejs请求模块从nodejs请求rest服务器。是否可以确定将返回给我的数据的大小(在接受数据之前)?如果将返回给我的数据的大小超过我确定的数量,我想取消该操作。此处的目的是确保我的网络未被锁定 我的要求如下Javascript 在Nodejs中,如何在不接收响应的情况下检测内容长度(响应大小)?,javascript,node.js,request,content-length,Javascript,Node.js,Request,Content Length,我正在使用nodejs请求模块从nodejs请求rest服务器。是否可以确定将返回给我的数据的大小(在接受数据之前)?如果将返回给我的数据的大小超过我确定的数量,我想取消该操作。此处的目的是确保我的网络未被锁定 我的要求如下 const request = registry.get("requestPromiseNative"); const logger = registry.get("logger"); let env = registry.get("env"); class Smart
const request = registry.get("requestPromiseNative");
const logger = registry.get("logger");
let env = registry.get("env");
class SmartContractFetch {
constructor() {
this.dataSizeFetched = 0; //in bytes
}
async fetchData(method, url, data = {}, header = {}) {
try {
logger.info("Smart contract fetch işlemi başladı.");
if (method.toUpperCase() === "POST") {
console.log("POS içinde : " + JSON.stringify(data));
let response = await request.post({
url: url,
resolveWithFullResponse: true,
form: data,
headers: header
});
let responseJSON = JSON.parse(response.body);
this.dataSizeFetched += response.body.length;
logger.info(
"Smart contract fetch işlemi başarıyla tamamlandı. Gelen Data : " +
responseJSON
);
return responseJSON;
} else if (method.toUpperCase() === "GET") {
console.log("GET içinde : " + JSON.stringify(data));
let response = await request.get({
url: url,
resolveWithFullResponse: true,
form: data,
headers: header
});
this.dataSizeFetched += response.body.length;
let responseJSON = JSON.parse(response.body);
logger.info(
"Smart contract fetch işlemi başarıyla tamamlandı. Gelen Data : " +
responseJSON
);
return responseJSON;
}
} catch (error) {
logger.error(
"Smart contract fetch işlemi başarısız. Sonuç : " + error.message
);
throw new Error(error);
}
}
}
module.exports = SmartContractFetch;
可能的重复项在不引入数据的情况下无法理解数据的大小。如果不读取数据,则无法猜测响应大小。链接中的解决方案不会读取所有数据。它将其读取为流,并在极限处停止。不要担心网络资源。如果您为响应大小设置了一个下限,则不会对其产生影响。也许还有其他的解决方案,但我不认为你只能用Node来解决。谢谢你的回复。但是我并没有使用nodejs http的所有请求类型的流实例。我错了。@Zak谢谢你。这解决了我的问题。如果你能在下面回答我,我想投票给你的帖子。