Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我对返回URL而不是数据的代码有问题_Javascript_Node.js_Api - Fatal编程技术网

Javascript 我对返回URL而不是数据的代码有问题

Javascript 我对返回URL而不是数据的代码有问题,javascript,node.js,api,Javascript,Node.js,Api,此代码返回一个链接 html bodyYou's been a href http://www.goodreads.com/book/show/656.War_and_Peace“重定向了一个bodyhtml 而不是其中的xml数据。 我不知道为什么?通常,多个回调样式会让事情变得非常混乱。您可以使用promises或async/await样式。这将使代码更清晰、更容易理解。请看下面的内容 var http = require('http'); var xml2js = require('xm

此代码返回一个链接

html bodyYou's been a href http://www.goodreads.com/book/show/656.War_and_Peace“重定向了一个bodyhtml

而不是其中的xml数据。
我不知道为什么?

通常,多个回调样式会让事情变得非常混乱。您可以使用promises或async/await样式。这将使代码更清晰、更容易理解。请看下面的内容

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;

希望这有帮助。

什么是
my developer key
?代码的格式使其无法读取。我不知道为什么函数会在返回对象的位置返回字符串(url)。在return语句中,您应该调用
getBookById()
函数。但是,
getBookById
函数返回noting,因此它应该返回
undefined
。您能将其标记为答案供其他人参考吗?
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;
}