【问题标题】:how get data to object when call api use https.request in nodejs调用api时如何获取数据对象在nodejs中使用https.request
【发布时间】: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

【问题讨论】:

    标签: node.js graphql nestjs


    【解决方案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
    猜你喜欢
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多