2017-09-19 59 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