【发布时间】:2017-03-21 16:31:32
【问题描述】:
我需要将一组 REST API 抽象为一个简单易用的 API。我正计划创建一个简单的 nodejs/express API,它使各个标注异步进行,然后一次返回所有结果。
JS 场景瞬息万变,我看到的很多信息似乎已经过时了。我希望有人能给我一些建议,并为我指出可能为此类场景设置的最佳实践或框架。
【问题讨论】:
标签: javascript node.js express asynchronous
我需要将一组 REST API 抽象为一个简单易用的 API。我正计划创建一个简单的 nodejs/express API,它使各个标注异步进行,然后一次返回所有结果。
JS 场景瞬息万变,我看到的很多信息似乎已经过时了。我希望有人能给我一些建议,并为我指出可能为此类场景设置的最佳实践或框架。
【问题讨论】:
标签: javascript node.js express asynchronous
这听起来就像一个简单的 Express 应用程序 - 没什么复杂的。我会使用 request-promise 模块为您提供一个基于 Promise 的良好接口,用于向其他主机发出请求,然后使用 Promise 将多个请求协调为一个响应。
除此之外,您还必须向我们展示您正在尝试做什么的更多细节,以便我们提供更多细节。
如果您只想同时发出三个请求,然后合并结果,下面是一个粗略的示例:
const rp = require('request-promise');
const express = require('express');
const app = express();
app.get('/getAll', (req, res) => {
// construct urls
let p1 = rp(url1);
let p2 = rp(url2);
let p3 = rp(url3);
Promise.all([p1, p2, p3]).then(results => {
// construct full response from the results array
req.send(fullResponse);
}).catch(err => {
res.status(500).send(err.message);
});
});
app.listen(80);
2020 年 1 月编辑 - request() 模块处于维护模式
仅供参考,request 模块及其衍生模块如request-promise 现在处于维护模式,不会积极开发以添加新功能。你可以阅读更多关于推理的信息here。 this table 中有一个备选方案列表,其中对每个备选方案进行了一些讨论。我自己一直在使用got(),它从一开始就是使用 Promise 构建的,而且使用简单。
【讨论】:
就我个人而言,我为 nodejs 使用 async (Link Here),async.parallel 方法接受一组 ajax 调用,每个调用都有自己的可选回调,以及所有完成后的回调。
【讨论】: