我无法在请求时将JSON对象返回给客户端 - 我正在处理对'/ btc'的第一次GET调用。
//Main server to recieve requests
http.createServer(function(req,res){
switch(req.method){
case 'GET':
switch(req.url){
case '/btc':
callBtcApi(req,res)
console.log(' btc called');
break;
case '/wallet':
callBtcWallet(req,res)
console.log('wallet called');
break;
case '/weather':
callWeather(req,res);
console.log('weather called');
break
default:
console.log('calling but not hitting');
break;
}
case 'POST':
switch(req.url){
case '/update':
console.log('update called');
break;
}
}
}).listen(3000);
下面的callBtcApi(),查询比特币API并成功返回一个JSON对象(我打算用这个函数做更多的事情,先把基础知识放下来)。 callBtcApi()被成功调用。
function callBtcApi(req,res){
message = '';
https.get('https://api.bitcoinaverage.com/ticker/global/GBP/', function(res){
res.on('data',function(data){
message += data;
});
res.on('end',function(){
console.log('props called ;)');
writeToCLient(res,message);
});
}).on('error', function(e){
console.error(e);
});
}
我遇到的问题是当我将此数据传递给res.on('end')中的writeToCLient()函数时。我在终端收到的错误是
TypeError: res.setHeader is not a function
我知道消息被传递到函数writeToCLient()中,因为我能够在控制台时看到终端中的数据。如果我临时隐藏所有res。()调用,我会调用.log(消息)。
function writeToCLient(res,message){
console.log(message);
res.statusCode = 200;
res.setHeader('Content-Type','application/json');
res.end(JSON.stringify(message));
}
我搜索了谷歌,但没有找到任何解释可能是什么问题的东西。问题可能是调用来自callBtcApi()内部的HTTP.get()请求,该请求位于我的主服务器中? 感谢
答案 0 :(得分:2)
你能尝试一下吗?
function callBtcApi(request,response){
message = '';
https.get('https://api.bitcoinaverage.com/ticker/global/GBP/', function(res){
res.on('data',function(data){
message += data;
});
res.on('end',function(){
console.log('props called ;)');
writeToCLient(response,message);
});
}).on('error', function(e){
console.error(e);
});
}