从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(); 
    )}; 

哪个选项会 你选?还是有另一种更好的方法?

+1

第三个,因为从你自己的服务器调用你自己的服务器不是那么高效。 –

您不需要转发请求给自己。通过很好地构建它,你可以在自己的代码中处理它。比方说,你有两个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

+0

实施应该如选项3一样?或者还有其他方法可以在不同文件中使用这些方法吗?嗯,谢谢你有关async lib – AljoSt

+0

是的更多信息。 “复制并粘贴代码”很少是一个好主意。我做了一个今天早些时候使用异步的例子:https://tonicdev.com/jadaradix/async –