最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

[当调用api在nodejs中使用https.request时如何获取数据到对象

IT培训 admin 4浏览 0评论

[当调用api在nodejs中使用https.request时如何获取数据到对象

当我尝试调用另一个未识别的api时,我尝试将数据获取到变量'results'中

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

回答如下:

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)=>{})是异步调用,因此即使在api调用完成之前,代码中的console.log(results)也会被执行。

[当调用api在nodejs中使用https.request时如何获取数据到对象

当我尝试调用另一个未识别的api时,我尝试将数据获取到变量'results'中

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

回答如下:

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)=>{})是异步调用,因此即使在api调用完成之前,代码中的console.log(results)也会被执行。

发布评论

评论列表 (0)

  1. 暂无评论