You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用Goodreads API返回HTML重定向而非XML数据的问题

解决Goodreads API返回重定向HTML而非XML的问题

我刚帮你排查了代码里的几个关键问题,这些应该就是导致你拿到重定向HTML而不是预期XML数据的原因:


问题1:URL参数的HTML实体编码错误

你代码里的请求路径用了&来分隔参数,但这是HTML页面里的转义写法,直接用在HTTP请求的URL中会被服务器错误解析。正确的参数分隔符应该是普通的&符号。

问题2:未替换开发者密钥占位符

如果代码里的{my developer key}还是占位符,没有换成你在Goodreads开发者平台申请的真实密钥,服务器会直接拒绝你的API请求,跳转到公开的书籍详情页面(也就是你看到的重定向HTML)。

问题3:未处理HTTP重定向

Node.js的http.get模块默认不会自动跟随3xx系列的重定向响应,当服务器返回跳转指令时,你需要手动处理才能拿到最终的XML数据。


修改后的可运行代码

var http = require('http');
var xml2js = require('xml2js');
var parser = xml2js.Parser({ explicitArray: false });

var goodreadsService = function () {
  var getBookById = function (id, cb) {
    // 务必替换为你的真实Goodreads开发者密钥
    var apiKey = 'YOUR_REAL_DEVELOPER_KEY';
    var options = {
      host: 'www.goodreads.com',
      // 修正参数分隔符,用模板字符串动态拼接书籍ID
      path: `/book/show/${id}?format=xml&key=${apiKey}`
    };

    var callback = function (response) {
      // 处理3xx重定向:自动跟随跳转地址
      if (response.statusCode >= 300 && response.statusCode < 400 && response.headers.location) {
        var redirectUrl = new URL(response.headers.location);
        http.get({
          host: redirectUrl.host,
          path: redirectUrl.pathname + redirectUrl.search
        }, callback).end();
        return;
      }

      var str = '';
      response.on('data', function (chunk) {
        str += chunk;
      });
      response.on('end', function () {
        parser.parseString(str, function (err, result) {
          if (err) {
            return cb(err); // 传递解析错误给回调
          }
          cb(null, result.GoodreadsResponse?.book);
        });
      });
    };

    // 增加请求错误处理,避免无响应情况
    http.get(options, callback).on('error', function(err) {
      cb(err);
    }).end();
  };

  return { getBookById: getBookById };
};

module.exports = goodreadsService;

额外注意事项

  1. 确认你的开发者密钥已经通过Goodreads的审核,并且没有超过调用限额。
  2. 如果还是有问题,可以在response.on('end')里先打印str的内容,看看服务器返回的具体错误信息(比如密钥无效、书籍ID不存在等)。

内容的提问来源于stack exchange,提问作者user12625326

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:03:54