Ответ 1
http отправляет/принимает данные как строки... это как раз то, что происходит. Вы пытаетесь разобрать строку как json.
var jsonObject = JSON.parse(data);
Вот моя модель с ответом json:
exports.getUser = function(req, res, callback) {
User.find(req.body, function (err, data) {
if (err) {
res.json(err.errors);
} else {
res.json(data);
}
});
};
Здесь я получаю его через http.request. Почему я получаю (данные) строку, а не json?
var options = {
hostname: '127.0.0.1'
,port: app.get('port')
,path: '/users'
,method: 'GET'
,headers: { 'Content-Type': 'application/json' }
};
var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (data) {
console.log(data); // I can't parse it because, it a string. why?
});
});
reqA.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
reqA.end();
Как я могу получить json?
http отправляет/принимает данные как строки... это как раз то, что происходит. Вы пытаетесь разобрать строку как json.
var jsonObject = JSON.parse(data);
Просто скажите запрос, что вы используете json: true и забудьте о заголовке и синтаксическом разборе
var options = {
hostname: '127.0.0.1',
port: app.get('port'),
path: '/users',
method: 'GET',
json:true
}
request(options, function(error, response, body){
if(error) console.log(error);
else console.log(body);
});
и то же самое для post
var options = {
hostname: '127.0.0.1',
port: app.get('port'),
path: '/users',
method: 'POST',
json: {"name":"John", "lastname":"Doe"}
}
request(options, function(error, response, body){
if(error) console.log(error);
else console.log(body);
});
Просто установите для параметра json
значение true
, тело будет содержать разобранный json:
request({
url: 'http://...',
json: true
}, function(error, response, body) {
console.log(body);
});