Node.js-当我知道数据存在@我正在使用的URL时,为什么我的HTTP GET请求返回404

时间:2018-10-31 19:37:31

标签: node.js json http npm request

我对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()子句。但是我不知道为什么会这样,因为那里有数据。我知道是因为我手动将其放置在那里。

1 个答案:

答案 0 :(得分:0)

感谢@Kevin B提供有关提供静态文件的提示。我使用express.static修改了逻辑,并使用该功能提供了文件,一切都按预期工作。