2015-12-09 204 views
1

這可能是一個愚蠢的問題,但我對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

第三個,因爲從你自己的服務器調用你自己的服務器不是那麼高效。 –

回答

2

您不需要轉發請求給自己。通過很好地構建它,你可以在自己的代碼中處理它。比方說,你有兩個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 –