从REST API中调用REST Api(Node.js)
这可能是一个愚蠢的问题,但我对Node/REST相当陌生,无法找到答案。从REST API中调用REST Api(Node.js)
假设有一个请求A要求对象A('../student/:studentId')。 还有另一个请求B请求对象B('... /讲座/:lectureid')。现在对象B将包含关于讲座的一些信息,但也包含参加讲座的学生。
现在我能想到三种possbile方式组装对象B:
1:呼叫请求数次Resquest乙
2:复制的处理中,代码从粘贴请求A
3的处理.:创建访问数据库中的对象,并将其附加到所有请求查询:
var dbAccessObject = require('./dbAccess');
app.use(function (req,res,next){
req.dbAccessObject = dbAccessObject;
next();
)};
哪个选项会 你选?还是有另一种更好的方法?
您不需要转发请求给自己。通过很好地构建它,你可以在自己的代码中处理它。比方说,你有两个API路线:
/a: runA();
/b: runB();
愿与您/ C返回既/和/ B的结果,就好像两个呼叫被做了。如果你已经打破了你的逻辑到runA()
和runB()
如上,那么/ C变成runC()
:
return {
a: runA(),
b: runB()
}
编写同步代码的时候,但异步代码是有点难度,因为runB()
可能runA()
之前返回这是简单的;你需要知道他们什么时候都完成了。我建议使用这个库作为快速胜利:http://www.informit.com/articles/article.aspx?p=2265406&seqNum=2
实施应该如选项3一样?或者还有其他方法可以在不同文件中使用这些方法吗?嗯,谢谢你有关async lib – AljoSt
是的更多信息。 “复制并粘贴代码”很少是一个好主意。我做了一个今天早些时候使用异步的例子:https://tonicdev.com/jadaradix/async –
第三个,因为从你自己的服务器调用你自己的服务器不是那么高效。 –