使用 Nodejs 访问国会图书馆关联数据时出现问题

Problem accessing Library of Congress Linked Data using Nodejs

位于 http://id.loc.gov/techcenter/ 的国会图书馆技术中心页面提供了访问链接数据的示例。

例如:

curl -L -H 'Accept: application/json' http://id.loc.gov/vocabulary/preservationEvents/creation

运行 上面的示例 returns 一个 json 响应 - 我已经这样做了。

但是当我尝试使用 Nodejs 脚本访问相同的 url - 使用 Accept header 时,它 returns 出现“404 Not Found”错误。

这是我的脚本:

'use strict';
const request = require('request');

var url = "http://id.loc.gov/vocabulary/preservationEvents/creation";
    var options = {
        url: url,
      headers: {
        "Accept": "application/json"
      }
    };
    request(
        options,
        (error, response, body) => {
            if (error) {
                return console.error(error);
            }
            if (response.statusCode == 200) {
                var resp = JSON.parse(body);
                console.log(resp);
                return console.log(body.substr(0, 128) + '...');
            }
            else {
                return console.error('Error: Response statusCode='+response.statusCode);
            }
        }
    );
    

我已经在我的 mac 和 Digital Ocean Ubuntu 服务器上试过了 - 都给出了 404 Not Found 结果。

如果您有时间,我将很高兴知道您是否能够使用此脚本获得响应 - 或者如果您发现错误请告诉我。

感谢任何帮助。

谢谢

科林·戈德堡

您似乎需要在发送给请求的选项中设置用户代理。例如,如果您将它设置为与 curl 使用的相同

var options = {
    url: url,
    headers: {
        "Accept": "application/json",
        "User-Agent": "curl/7.54.0" 
    }
};

似乎你几乎可以将 User-Agent 设置为任何东西,只要你设置它就会起作用。