Node.js - Почему мой HTTP-запрос GET возвращает 404, когда я знаю, что данные есть, и URL-адрес, который я использую - PullRequest
0 голосов
/ 31 октября 2018

Я все еще новичок в Node, и запросы HTTP сбивают меня с толку. Я проверил все ответы на похожие вопросы, но, похоже, ни один из них не решает мою проблему.

Мне под рукой оказали помощь в поиске файлов JSON в API. Затем я анализирую эти файлы JSON, чтобы разделить их на строки, которые заполняют базу данных SQL. API имеет один файл JSON с идентификатором keys.json, который выглядит следующим образом:

{
"keys":["5sM5YLnnNMN_1540338527220.json","5sM5YLnnNMN_1540389571029.json","6tN6ZMooONO_1540389269289.json"]
}

Каждый элемент массива в свойстве keys содержит значение одного из файлов данных JSON в API.

У меня возникают проблемы с возвращением мне файлов любого типа, но я думаю, что если я смогу узнать, что не так с тем, как я пытаюсь получить 'keys.json', я могу использовать эти знания для получения отдельного JSON файлы данных, представленные в массиве ключей.

Я использую модули npm 'request' и 'request-обещание-native' следующим образом:

const request   = require('request');
const rp        = require('request-promise-native');

Мой URL состоит из следующих элементов: (Я использовал ..., чтобы сохранить мой клиент анонимным, но кроме этого это прямая копия:

let baseURL = 'http://localhost:3000/Users/doug5solas/sandbox/.../server/.quizzes/'; //  this is the development value only
let keysID = 'keys.json';

Очевидно, что аспект localhost должен исчезнуть, когда мы развернемся, но я сейчас только тестирую.

Вот мой HTTP-вызов:

let options = {
    method: 'GET',
    uri: baseURL + keysID,
    headers: {
        'User-Agent': 'Request-Promise'
    },
    json: true // Automatically parses the JSON string in the response
};
rp(options)
    .then(function (res) {
        jsonKeysList = res.keys;
        console.log('Fetched', jsonKeysList);
    })
    .catch(function (err) {
        // API call failed
        let errMessage = err.options.uri + ' ' + err.statusCode + ' Not Found';
        console.log(errMessage);
        return errMessage;
    });

Вот мой вывод консоли:

http://localhost:3000/Users/doug5solas/sandbox/.../server/.quizzes/keys.json 404 Not Found

Мне ясно, что берется предложение .catch (), а не предложение .then (). Но я не знаю, почему это так, потому что данные есть в этом месте. Я знаю, это потому, что я поместил его туда вручную.

1 Ответ

0 голосов
/ 01 ноября 2018

Спасибо @Kevin B за подсказку по обслуживанию статических файлов. Я обновил логику, используя express.static, и обработал файл, используя эту возможность, и все заработало как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...