Проблема доступа к связанным данным Библиотеки Конгресса с помощью Nodejs - PullRequest
0 голосов
/ 16 октября 2018

На странице технического центра Библиотеки Конгресса по адресу http://id.loc.gov/techcenter/ приведены примеры доступа к связанным данным.

Например:

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

Запуск приведенного выше примера возвращает ответ json - Iсделали это.

Но когда я пробую скрипт 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 голосов
/ 16 октября 2018

Похоже, вам нужно установить User-Agent в опциях, отправленных на запрос.Например, он работает, если вы установите его так же, как curl использует

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

Похоже, вы можете в значительной степени установить User-Agent на что угодно, и он будет работать, пока вы его установите.

...