我在关注HTTP
请求主题的教程时遇到了问题。我无法获取代码来自动解析我对JSON
的回复。这仍然是文本。虽然声明指定' json:true'这会将类型设置为json
并进行解析。
教程:https://www.terlici.com/2015/04/28/couchdb-node-express.html
var request = require('request');
var url = 'http://127.0.0.1:5984/';
var db = 'js-express-librarytutorial/';
var id = 'document_id';
request.put(url + db);
request.put({
url: url + db + id,
body: {
user: "Tom",
message: "Document 2"
},
json: true
}, function(){request(url + db + id, function(err, res, body) {
console.log(typeof (body));
console.log(body);
console.log(body.user + ' : ' + body.message);
})
});
有没有人知道如何触发http-calls
的自动解析。
答案 0 :(得分:1)
尝试在json中发送requestData,如下所示:
using eBay.Service.Call;
using eBay.Service.Core.Sdk;
using eBay.Service.Util;
using eBay.Service.Core.Soap;
这可能会奏效。 我还没有权利对问题发表评论。否则我应该在评论中提出建议。因此,张贴作为答案。 如果它适合你,请告诉我。
答案 1 :(得分:0)
所以研究指出我的问题是由于我原始调用中的回调函数的范围和嵌套。
请求调用上的json: true
参数将content-type设置为application / json。这自动利用了对任何返回数据的解析:
request({url: url+db+"1", method: 'get', json: true}, function(err, res, body) {
if (err) {
throw err;
}
console.log(typeof (body));
console.log(body);
});
在此示例中,不需要解析并返回Object。
然而,当我将回调嵌套在具有单独请求调用的匿名函数中时,内容类型将恢复为text / *
使用匿名回调:
request.put(url + db, function(err, res, body){
request.put({
url: url + db + id,
body: { user : "Tom", message: "Document"},
json: true
},function(){
request(url+db+id,, function(err, res, body){
console.log(typeof (body));
console.log(body);
});
});
});
这可以通过以下方式预防:
示例:
request.get({...}, function(){request({url: url+db+id, method: "GET", json: true}, function(err, res, body){})}
示例:
request({url: url+db+"1", method: 'get', json: true}, function(err, res, body) {...});