我有一个简单的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)
@ 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
模式来发出这些请求。
尝试这样的事情: -
https.get("https://api.pro.coinbase.com/products/btc-eur/ticker",res=>{
res.on('data', (chunk) => { console.log(JSON.parse(chunk))})
})
扩展@ 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
将抛出错误)。
使用节点(您需要请求模块):
// 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