调用api时如何获取数据对象在nodejs中使用https.request
Posted
技术标签:
【中文标题】调用api时如何获取数据对象在nodejs中使用https.request【英文标题】:how get data to object when call api use https.request in nodejs 【发布时间】:2020-01-29 01:18:21 【问题描述】:当调用另一个但身份不明的 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
【问题讨论】:
【参考方案1】:https.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 调用完成之前执行。
【讨论】:
我是 graphql 用户,我想在 graphql 'localhost:3000/graphql' 上显示数据,所以我需要自定义数据显示 graphql以上是关于调用api时如何获取数据对象在nodejs中使用https.request的主要内容,如果未能解决你的问题,请参考以下文章
通过 NodeJS 获取 JSON 数据时,如何通过 ExpressJS 更新我的 EJS 模板?