var http = require('http');
var xml2js = require('xml2js');
var parser = xml2js.Parser({
explicitArray: false
});
var goodreadsService = function () {
var getBookById = function (id, cb) {
var options = {
host: 'www.goodreads.com',
path: '/book/show/656?format=xml&key={my developer key}'
};
var callback = function (response) {
var str = '';
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
console.log(str);
parser.parseString(str,
function (err, result) {
cb(null,
result.GoodreadsResponse.book);
});
});
};
http.get(options, callback).end();
};
return {
getBookById: getBookById
};
};
module.exports = goodreadsService;
此代码返回一个链接
html正文您是一个href http://www.goodreads.com/book/show/656.War_and_Peace“重定向了一个正文
代替其中的xml数据。 我不为什么?
答案 0 :(得分:0)
通常,多个回调样式使事情变得非常混乱。您可以使用promise或async / await样式。它将使代码更简洁,更易于理解。看这个
var got = require("got");
var xml2js = require("xml2js");
var parser = xml2js.Parser({ explicitArray: false });
async function getById(id) {
const response = await got("https://goodreads.com/book/show/656?format=xml&key=somekey");
const json = await parser.parseStringPromise(response.body);
return json;
}
希望这会有所帮助。