node.js - 调用api时如何获取数据对象在nodejs中使用https.request
问题描述
当调用另一个但身份不明的 api 时,我尝试将数据获取到变量“结果”
let results;
const req = https.request(options, (res) => {
res.setEncoding('utf8');
res.on('data', (body) => {
results = JSON.parse(body).payUrl;
});
res.on('end', () => {
console.log('No more data in response.');
});
});
console.log(results);
results = unidentified
解决方案
Inhttps.request(options,(res)=>{})
res
是一个流,将在事件“数据”上以块的形式发出数据。因此,您不会一口气获得完整的数据。您将代码更改如下:
let results;
let url;
const req = https.request(options, (res) => {
res.setEncoding('utf8');
let body="";
res.on('data', (chunk) => {
body = body+chunk // aggregate data
})
res.on('end', () => {
// once data is completly fetched do JSON.parse();
console.log('No more data in response.')
results = JSON.parse(body);
console.log(results)
url = results.url
console.log(url);
})
});
req.on('error', (e) => {
// listen for error
console.log(e.message);
});
此外,https.request(options,(res)=>{})
异步调用console.log(results)
是否会在您的代码中执行,甚至在 api 调用完成之前执行。
推荐阅读
- ios - 任何人都可以确认 AR+ 将与运行 iOS 11 的 iPad 4 mini(或类似的 iPad)一起使用吗?
- python - 如何通过索引将数组插入现有的多维数组?[Python]
- iis - 将文件夹的 IIS URL 重写到另一个 Web 服务器
- python - 如何正确传递路径变量?
- parallel-processing - Pytorch:如何在集群中的多台机器上运行代码
- ios - 如何隐藏快速可可豆饼饼图中的标签
- c# - 带有错误跟踪的 EF Core 批量插入
- python - “TypeError:列表索引必须是整数或切片,而不是浮点数”(在查找蒸发量时)
- javascript - React js在具有属性的数组中添加或删除状态对象
- javascript - 将多个图像从图库上传到休息方法导致某些图像未上传