Я все еще новичок в 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 (). Но я не знаю, почему это так, потому что данные есть в этом месте. Я знаю, это потому, что я поместил его туда вручную.