如何在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请求构造和提取值?的主要内容,如果未能解决你的问题,请参考以下文章

10个可靠的JavaScript测试工具

如何更新使用 C++ 中的 ATL OLE 数据库从简单的 SQL 服务器表中获取的行数据

从简单的命令开始和我一起学习linux

PowerShell 从简单的 .ini 文件中读取单个值

三十天学不会TCP,UDP/IP网络编程-UDP,从简单的开始

从简单的 python 列表创建图像和标签的 tensorflow 数据集