我正在使用節點包請求發送請求到我的後端。問題是,Request/GET和/ POST返回不同的實體。節點請求返回不同的結果
res.json()來自一個擁抱的express函數,所以不要混淆。
/GET返回JSON
request({
url: baseUrl + '/users',
method: 'GET'
}, function (error, response, body) {
if (error) {
res.send('500', 'Internal Server Error');
} else {
console.log(body);
res.json(response.statusCode, body);
}
});
的console.log(主體):
[{
"id": "1",
"forename": "John",
"surename": "Doe",
"birthdate": 1478953818343,
"email": "[email protected]"
}, {
"id": "2",
"forename": "John",
"surename": "Doe",
"birthdate": 1478953818343,
"email": "[email protected]"
}]
/POST返回JavaScript對象
request({
url: baseUrl + '/users',
method: 'POST',
json: {
email: req.body.email,
forename: req.body.forename,
surename: req.body.surename
}
}, function(error, response, body) {
if (error) {
res.send('500', 'Internal Server Error');
} else {
console.log(body);
res.json(response.statusCode, body);
}
});
的console.log(主體):
{ id: '3',
forename: 'John',
surename: 'Doe',
birthdate: 1478953818343,
email: '[email protected]' }
當我設置請求選項json:false時,兩者都返回一個json。 當我設置請求選項json:true時,都返回javascript對象。
後端響應在兩個請求上都是json。我不知道這種行爲是一個錯誤還是我做錯了什麼。
請求文檔說: json - 將body設置爲值的JSON表示並添加Content-type:application/json頭。此外,將響應正文解析爲JSON。
body - body body用於PATCH,POST和PUT請求。必須是一個Buffer,String或ReadStream。如果json爲true,則body必須是JSON序列化的對象。
那麼,爲什麼/ GET返回JSON和/ POST返回javacript對象,當它在兩個方法上接收json響應?
你能張貼在這裏,對於'GET'和'POST'方法的反應,看看他們有什麼不同? –
'當我設置請求選項json:true時,都返回javascript對象。是不是json選項的重點,..它基本上會自動爲您的結果做一個JSON.parse。這是一個JavaScript對象,因爲JSON只是一個字符串。 – Keith