我从我的node.js服务器发送请求,在控制台中我正在尝试打印响应数据。当我尝试打印Json数组时。它很好。就像这样 -
{"id":1,"name":"Asm Arman","confirmed":0,"confirmation_code":null,"created_at":"2016-09-29 16:34:39","updated_at":"2016-10-04 06:55:30"}
使用此 -
var request = require('request');
var app = require("express")();
app.get('/', function(req, res){
request.get('http://localhost:8000/api', function(err, response, body){
***res.send(body);
console.log(body);***
});
});
app.listen(8081);
但我无法打印 键:值 对。我正在 undefined 。这是我的Js文件
var request = require('request');
var app = require("express")();
app.get('/', function(req, res){
request.get('http://localhost:8000/api', function(err, response, body){
var string=JSON.parse(body);
res.send(string.name);
console.log(string.name);
});
});
app.listen(8081);
不仅Json.parse()我还使用了Json.stringify()。但没有运气。
答案 0 :(得分:1)
为了解析请求的正文,您需要使用默认情况下未安装Express的body-parser。它将允许您处理使用JSON,URL编码的表单值或文本格式化的正文。
npm install body-parser --save
然后将以下内容添加到您的代码中。
var bodyParser = require('body-parser');
// place this before your routes
app.use(bodyParser.json())
答案 1 :(得分:0)
看看here,这是一个基本的例子。我不得不查看文档以了解get方法的工作原理,因为我认为它类似于自动解析响应体的示例。
简短而瘦的是节点中的请求和响应对象是流。当数据流进入时,它会触发data
事件,该事件将为您提供数据块,您可以捕获这些数据并将其附加在一起以获取请求或响应的正文。
因此,您的代码将类似于:
let body = '';
http.get('url', (res) => {
res.on('data', (chunk) => body += chunk);
res.on('end', () => {
// now the body variable is prepared and you can do something with it
}
res.on('error', err => {
// Handle errors
}
});
数据作为缓冲区以块的形式出现,因此需要转换为字符串,然后解析它以使用它。所以,像这样:
JSON.parse(body.toString());
答案 2 :(得分:0)
您是否100%确定这不仅仅是console.log输出您的对象的方式?也许request
为你解析了JSON。