如何在node.js中管理一系列API调用
我有一系列API端点,为了建立规范列表,我需要对这些端点进行一系列轮询:如何在node.js中管理一系列API调用,node.js,asynchronous,httprequest,async.js,Node.js,Asynchronous,Httprequest,Async.js,我有一系列API端点,为了建立规范列表,我需要对这些端点进行一系列轮询: /cities /homes /parcelvalue 因此,轮询/cities会给我一个城市列表,轮询/homes会给我一个给定城市中所有地址的列表,轮询/parcelvalue会给我给定家庭的值 最后,我将构建一个文件树,将轮询每个端点的增量输出保存到一个目录中,以便进行审计: | \-cities/cities.json | \-homes/homes.json | \-parcelvalue/parcelvalu
/cities
/homes
/parcelvalue
因此,轮询/cities
会给我一个城市列表,轮询/homes
会给我一个给定城市中所有地址的列表,轮询/parcelvalue
会给我给定家庭的值
最后,我将构建一个文件树,将轮询每个端点的增量输出保存到一个目录中,以便进行审计:
|
\-cities/cities.json
|
\-homes/homes.json
|
\-parcelvalue/parcelvalue.json
因此,cities.json
是/cities
enpoint的原始输出,homes.json
包含对cities.json
中每个城市的/homes
端点进行轮询的结果,而parcelvalue.json
包含对homes.json
中每个家庭的/parcelvalue
端点进行轮询的输出。我希望每个步骤都依赖于磁盘I/O,以便构建homes.json
的函数从cities.json
文件开始
我所能看到的最简单的方法是每一步都做一次。同步加载可能通知它的文件,2。同步轮询相应的端点,然后选择3。同步保存每个函数可能生成的文件:
getCities()
函数可能会检查是否存在cities.json
,并从端点生成该文件。如果不存在,则getHomes()
函数可能会导入cities.json
,然后轮询列表中每个城市的/homes
端点,然后生成homes.json
,而getParcelValues()
函数可能会导入homes.json
,然后轮询列表中每个home的/parcelvalue
端点,然后生成parcelvalue.json
(这是一个简化,我想通过函数过滤和错误处理等来添加,但我试图保持这个示例的重点。)
不幸的是,今天晚上对同步http请求库的彻底检查并没有产生任何在我的情况下有效的结果
是否有一种很好的方法可以使用类似或其他类似的异步工作流库,即异步库?我希望这些函数中的每一个都能被串联调用,
getCities()
->getHomes()
->getParcelValues()
,并尽可能多地进行封装。尝试以下方法:
var async=require('async')
async.auto({
cities : function(cb) {
//do your stuff ...
if (err)
cb(null, false);
else
cb(null, result);
},
homes : ['cities', function(cb, result) {
if(!result.cities)
cb(null, false)
else {
// do your stuff
if (err)
cb(null, false);
else
cb(null, homeResult);
}
}],
parcels : ['homes', function(cb, result) {
if(!result.homes)
cb(null, false)
else {
// do your stuff
if (err)
cb(null, false);
else
cb(null, parcelResult);
}
}]
},function(err, allResults){
//do final works
});