Node.js 应用程序从 GET 请求到 API 接收到空响应

Posted

技术标签:

【中文标题】Node.js 应用程序从 GET 请求到 API 接收到空响应【英文标题】:Node.js app receives empty response from GET request to API 【发布时间】:2017-05-06 05:36:15 【问题描述】:

我是 node.js 的新手,所以我会尽力在这里解释问题。让我知道是否需要任何澄清。

在我的 node.js 应用程序中,我试图获取一个代码(从第一次调用 API 的响应中收到),并使用该代码向另一个 API 发出第二次请求(GET 请求)服务。第一次调用的回调地址是/pass。但是,我从服务中获得了第二次通话的empty response

我的理解是,在第一次调用回调后,app.get('/pass', function (req, res).. 中的函数被调用并发送GET 请求。我在这里做错了什么?非常感谢!

这是我尝试从 node.js 服务器发出 GET 请求并收到空响应的部分:

    app.get('/pass', function (req, res)

    var options =   
        url: 'https://the url that I make GET request to',
        method: 'GET',
        headers: 
            'authorization_code': code,
            'Customer-Id':'someID',
            'Customer-Secret':'somePassword'
        
    ;

    request(options, function(err, res, body)   
        console.log(res);
    );
);

【问题讨论】:

err有什么东西吗? 上面写着:ERR_EMPTY_RESPONSE 【参考方案1】:

我对你的要求有点困惑,所以我只是试图掩盖我认为你在寻找的东西。

app.get('/pass', (req, res) => 
    res.send("hello!");      // localhost:port/pass will return hello 
)

现在,如果您在调用 /pass 端点时尝试从请求库调用 get 请求,情况仍然相似。首先,我认为您可以删除 'method' : 'GET' 键和值,因为它们不是必需的。现在除了响应之外,代码将与之前基本相同。

app.get('/pass', (req, res) => 
    var options =   
        url: 'https://the url that I make GET request to',
        headers: 
            'authorization_code': code,
            'Customer-Id':'someID',
            'Customer-Secret':'somePassword'
        
    ;

    request(options, function(err, res, body)   
    // may need to JSONparse the body before sending depending on what is to be expected.
        res.send(body); // this sends the data back 
    );
);

【讨论】:

谢谢@reedb89 关于app.get('/pass', (req, res) ,这是我上次通话的回拨网址。我认为在我的节点应用程序收到第一次调用的响应后,我的浏览器会转到 localhost:8080/pass?code=xyz...。我尝试使用该代码在此app.get('/pass', (req,res) 中进行第二次调用。所以我认为你回答中的res.send(body) 是第二次通话的res 吗?我不明白为什么我需要发回数据? 我想对第二次调用的 res 做的是,我想先看看它并从中检索一些值。这就是为什么我尝试将它登录到控制台.. console.log(body) 是否为您提供所需的内容? 不,body 表示“未定义”,与 res 相同。我从浏览器看到的错误首先是“空响应”,然后是“超时”。 err, res, body 是我从发送到 https://the url that I make GET request to 的请求中得到的响应 qith 所有标头对吗? 浏览器显示“超时”,因为您没有返回响应。是的,err、res、body 来自传递给请求方法的选项。 Tbh 我真的没有在这里看到任何问题。也许尝试删除标题并使用 www.google.com 作为测试。代码是在其他地方声明的全局变量吗?该文档在标题方面定义得非常好:github.com/request/request

以上是关于Node.js 应用程序从 GET 请求到 API 接收到空响应的主要内容,如果未能解决你的问题,请参考以下文章

从 Axios API 返回数据

当您不知道页数时,如何使用 Node.js 在 while 循环中向 API 发出多个分页 GET 请求?

从 Angular 2 客户端到 Node.js 服务器的 HTTP POST 请求

node.js http.get 在向远程站点发出 5 次请求后挂起

Post 请求 Node.js 和 React 的 CORS 错误

Node.JS 中的 HTTP DELETE 动词