调用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的主要内容,如果未能解决你的问题,请参考以下文章

如何从 bigquery nodejs api 获取整数?

通过 NodeJS 获取 JSON 数据时,如何通过 ExpressJS 更新我的 EJS 模板?

如何在nodejs 中前端js调用后台的对象

调用API请求时Nodejs中的ECONNRESET错误

NodeJS Rest API - 调用外部 API 的正确位置在哪里

如何从API调用中选择单个JavaScript对象/ JSON项目