首页 > 解决方案 > 如何在节点服务器上发出同步 http 请求?

问题描述

我有一个带有多个 api 端点的节点 Web 服务器。其中一个端点需要向另一台服务器发出请求,以便组装自己的响应。我已经看到了一些不同的答案,其中包含指向允许纯同步 Web 请求的库的链接,但它们都与表示不要在生产中使用它们的警告相关联。

这是我的服务器请求处理程序的示例:

app.get('/my_api_endpoint', function (req, res) {

    // Need to get data from other webservice using data 
    // from this request.
    data = request_to_other_web_service(req.params.some_value);

    res.status(200);
    res.send("This is the " + data);
    res.end();

});

是否有处理此类请求的标准模式?

标签: javascriptnode.jstypescriptexpresshttp

解决方案


尝试同步调用 HTTP 请求时收到错误/警告的原因是,从一开始,node.js 就以回调和事件循环的核心理念构建。如果您尝试以同步方式编写异步代码......我可以为您指出异步/等待的方向。你能用吗npm install node-fetch

const fetch = require('node-fetch');

app.get('/my_api_endpoint', async function (req, res) {

    // Need to get data from other webservice using data 
    // from this request.
    data = await fetch("http://...");

    res.status(200);
    res.send("This is the " + data);
    res.end();

});

推荐阅读