如何在我的Node.js代理中返回JSON?
我不得不将请求代理到Dota 2 API。 经过一番研究,我find了一种方法,在使用MEAN堆栈构build的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 }); }); });
控制台日志工作,但我需要数据返回到前端。
您只需将结果parsing为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
参数。
- Heroku上的HTTPS + SSL – Node + Express
- 节点http代理SSL透明
- 表示节点-http-proxy,proxy.proxyRequest到https服务器?
- Node.js https请求错误
- 在节点js中使用https和SSE
- 在node.js中调用https Web服务(在代理后面)
- 如何创build一个从HTTP / HTTPS API获取数据的Alexa Skill(在AWS Lambda上使用Node.js的“Alexa技能工具包”)
- 基于另一个http(s)查询的node.js(restify)服务器响应
- 使用HTTPS的Apache反向代理到node.js应用程序无法正常工作