2017-09-19 60 views
0

我不確定問題是什麼,但我想我必須使這個異步或基於promise(idk how)。我只是想通過呼叫傳遞給http服務器上的資源。 有人可以幫忙嗎?將http.request或superagent的值傳遞給http.createServer NodeJs

HTTP請求或SuperAgent將值傳遞給下面的函數。如何將此發送給http.createserver?

function receiveCallback(link) { 
    console.log(link); 
    //this works fine, echos the LINK we want to 302 to 
} 

如何通過鏈接到http服務器?

http.createServer(function (req, res) { 
    res.writeHead(302, {'Location': link}); 
    res.end(); 
}).listen('8080'); 

例如。用戶打開domain.com/test? somevar

somevar發送到的SuperAgent然後產生一個鏈接

如何302用戶鏈接

+0

可以調用'receiveCallback()'多次,或只是在開始一次? – gregnr

+0

多次。基本上服務器將url路徑傳遞給superagent,然後輸出一個我希望服務器到302的鏈接。 – JsEveryDay

+0

幾乎像這樣https://stackoverflow.com/questions/14243100/response-writehead-and-response-end-in-nodejs但如何將我的鏈接/回調插入函數。 – JsEveryDay

回答

1

如果您superagent每服務器獲取時間使自己的請求一個請求,它看起來像這樣:

const http = require('http'); 
const url = require('url'); 
const request = require('superagent'); 

http.createServer((req, res) => { 

    const queryParams = url.parse(req.url, true).query; 

    request 
     .get('/get/my/link') 
     .send({ somevar: queryParams.somevar }) 
     .end((err, response) => { 

      if (err) 
       throw err; 

      const link = response.body.link; 

      res.writeHead(302, { 'Location': link }); 
      res.end(); 
     }); 

}).listen('8080'); 
+0

你不能在另一個函數中調用res.writeHead或res.end。我已經嘗試過了。控制檯:TypeError:res.writeHead不是一個函數。 這就是爲什麼我重寫純HTTP中的superagent代碼和相同的結果。 – JsEveryDay

+0

嘗試此鏈接對您的請求。你應該最終在google.com上,但它不起作用。 http://www.mocky.io/v2/59c17f8b1300005605d29e24 – JsEveryDay

+0

修復了在同一範圍內有2個「res」變量的錯誤。所有人都應該現在工作。請記住,這只是我想出的一個例子 - 它期望得到如下回應:http://www.mocky.io/v2/59c1874d130000b805d29e33 – gregnr