我对Node还很陌生,以至于HTTP请求使我失望了。我已经检查了类似问题的所有答案,但似乎都无法解决我的问题。
我不得不处理API中的JSON文件。然后,我解析这些JSON文件,以将其分离为填充SQL数据库的行。该API有一个JSON文件,其ID为“ keys.json”,如下所示:
{
"keys":["5sM5YLnnNMN_1540338527220.json","5sM5YLnnNMN_1540389571029.json","6tN6ZMooONO_1540389269289.json"]
}
keys属性中的每个数组元素都包含API中JSON数据文件之一的值。
我在返回两种类型的文件时遇到问题,但是我想知道是否可以了解尝试获取“ keys.json”的方式出了什么问题,我可以利用该知识来获取单个JSON在keys数组中表示的数据文件。
我正在使用npm模块“ request”和“ request-promise-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';
显然,当我们部署时,本地主机方面将不得不消失,但是我现在正在测试。
这是我的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()子句。但是我不知道为什么会这样,因为那里有数据。我知道是因为我手动将其放置在那里。
答案 0 :(得分:0)
感谢@Kevin B提供有关提供静态文件的提示。我使用express.static修改了逻辑,并使用该功能提供了文件,一切都按预期工作。