如何在Node.js中从简单的HTTPS请求构造和提取值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Node.js中从简单的HTTPS请求构造和提取值?相关的知识,希望对你有一定的参考价值。
我有一个简单的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
将抛出错误)。
本教程很有帮助:https://davidwalsh.name/nodejs-http-request
另一答案
使用节点(您需要请求模块):
// 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
以上是关于如何在Node.js中从简单的HTTPS请求构造和提取值?的主要内容,如果未能解决你的问题,请参考以下文章
如何更新使用 C++ 中的 ATL OLE 数据库从简单的 SQL 服务器表中获取的行数据