使用Node.js访问国会链接数据库时出现问题

时间:2018-10-16 14:10:08

标签: node.js json linked-data

Max的美国国会图书馆技术中心页面提供了访问链接数据的示例。

例如:

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

运行上面的示例将返回一个json响应-我已经做到了。

但是,当我尝试使用Nodejs脚本访问相同的URL(带有Accept标头)时,它将返回“ 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结果。

如果您有空的话,很高兴知道您是否能够使用此脚本获得响应-或者让我知道您是否发现错误。

感谢您的帮助。

谢谢

科林·戈德堡

1 个答案:

答案 0 :(得分:0)

看起来您需要在发送给请求的选项中设置一个User-Agent。例如,如果将其设置为与curl使用相同,则会起作用

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

似乎您几乎可以将User-Agent设置为任何内容,并且只要您对其进行设置就可以使用。