2017-01-20 166 views
0

我试图通过请求答复发送请求,但不能,有人可以帮助我吗?Nodejs在发送请求后获取请求后返回数据

var app = require('express')(); 
var http = require('http').Server(app); 
var bodyParser = require('body-parser'); 
var request = require('request'); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 

http.listen(9999, function() { 
    console.log('listening...'); 
}); 

app.post('/bot',function(req,res){ 
    var apiurl = 'https://apiURI' 
    request(apiurl, function(error,response,body){ 
    res.send(body) 
    }) 
} 

当我收到的API答案应该发送给客户,谁做与res.send POST请求

error: Can't set headers after they are sent. 
+1

我猜这实际上是在你没有包括的代码中。如果我尝试在我的中间件管道中的某处尝试执行res.send两次,这种情况经常发生在我身上。它可能就像请求调用之后的某处有一个res.send一样简单。 –

+0

是的,你是对的有一些代码,我不包括在这里,这是孤立的代码,不工作,但没有其他res.send指令之前,我发现它在我的原始结束代码,这行'res.end()'给了我错误,谢谢你的时间@JeremyPridemore,问候! – nerdcoder

+0

不是固执的,但问题不在你列出的代码中。为了证明这一点,我将您的apiurl改为“http:// google.com”,并且实际在本地运行此程序,并且工作正常。有些时候我遇到了这个错误,我在if语句中有一个'res.send()',另外一个在if语句中没有'return'。所以他们都跑了。无论哪种方式,我们都无法帮助,因为实际问题不在您透露的代码中。 –

回答

0

错误解决,删除GET请求外底()方法,由于它是一个异步请求(我的错误)

var app = require('express')(); 
var http = require('http').Server(app); 
var bodyParser = require('body-parser'); 
var request = require('request'); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 

http.listen(9999, function() { 
    console.log('listening...'); 
}); 

app.post('/bot',function(req,res){ 
    var apiurl = 'https://newsapi.org/v1/articles?source=techcrunch&apiKey=72cc6a313e2b4fb3af09e4593ee06fbc' 
    request(apiurl, function(error,response,body){ 
    res.send(body) 
    }) 
    //res.end() 
})