如何在Node.js中从简单的HTTPS请求构造和提取值?

问题描述 投票:-1回答:4

我有一个简单的HTTPS请求 - https://api.pro.coinbase.com/products/btc-eur/ticker

在浏览器中,它返回一个对象。什么是最简单的代码,允许我在Node的终端中检索和显示这个对象(按原样)?

    const https = require('https')
    const url = https.get('https://api.pro.coinbase.com/products/btc-eur/ticker')

    const myObject = JSON.parse(url)
    console.log(myObject)
node.js
4个回答
0
投票

@ mamba76,欢迎来到SO社区。请使用Node.js node-fetch包。它使用起来要简单得多。您可以使用npm install安装它。

以下代码可能有所帮助

"use strict";
const fetch = require('node-fetch')

async function getValue() {

  // Invoke the API.
  // Wait until data is fetched.
  let response = await fetch('https://api.pro.coinbase.com/products/btc-eur/ticker');

  let value = await response.json();

  return value;
}

getValue().then(result => {console.log(result.price);});

作为一种好的做法,总是假设通过HTTP进行的API调用(无论是在您自己的网络中还是外部)可能需要时间来返回数据,因此您应该使用async-await模式来发出这些请求。


0
投票

尝试这样的事情: -

https.get("https://api.pro.coinbase.com/products/btc-eur/ticker",res=>{
    res.on('data', (chunk) => { console.log(JSON.parse(chunk))})
})

0
投票

扩展@ Akshay.N的答案而不使用外部依赖项,

const https = require('https')

https.get("https://api.pro.coinbase.com/products/btc-eur/ticker",res=>{
    let body = '';
    res.on('data', (chunk) => { body += chunk; });
    res.on('end', () => {
        const myObject = JSON.parse(body);
        console.log(myObject);
    })
})

现在,我们在这里做的是等待data事件,只要数据进入,并将其附加到变量body。一旦遇到end事件,我们将其视为已接收到所有数据的信号,我们可以继续使用JSON.parse将主体解析为对象(假设数据在JSON中序列化;如果不是JSON.parse将抛出错误)。

本教程很有帮助:https://davidwalsh.name/nodejs-http-request


-1
投票

使用节点(您需要请求模块):

// display object
(require("request")).get({

    url: "myurl",
    json: true

 }, function(e,r,b){
     console.log(b);
 });

// display as string
(require("request")).get({

    url: "myurl",
    json: false

 }, function(e,r,b){

     console.log(b);

 });

只需在你的终端卷曲(没有节点)

curl myurl
© www.soinside.com 2019 - 2024. All rights reserved.