我必须将请求代理到Dota 2 API。经过一些研究后,我发现了一种在我使用MEAN堆栈构建的API中实现它的方法。但是,我无法弄清楚如何从请求中返回数据。
这是我的节点服务器代码中的路由:
router.get('/api/allheros', function (req, res) {
Https.get('https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v0001/?key=FB900D42DC33F4B4FCC62F6C7779BE5D', function (res) {
var str = '';
console.log('Response is ' + res.statusCode);
res.on('data', function (chunk) {
str += chunk;
});
res.on('end', function () {
console.log(str); //This console logs all the heros correctly
});
});
});
控制台日志有效但我需要将数据返回到前端。
答案 0 :(得分:2)
您需要做的就是将结果解析为JSON对象并使用res.json()
将其发回。修改您的代码,如下所示,
router.get('/api/allheros', function (req, res) {
Https.get('https://api.steampowered.com/IEconDOTA2_570/GetHeroes/v0001/?key=FB900D42DC33F4B4FCC62F6C7779BE5D', function (response) {
var str = '';
console.log('Response is ' + response.statusCode);
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
res.json(JSON.parse(str));
});
});
});
注意:内部函数中的res
必须更改为response
,以便它不会屏蔽外部函数的res
参数。