我试图从国家公园管理局的应用程序接口中获取公园信息,但是res.on('data')从未被调用过,并且我得到了一个503的错误代码。这个API没有太多的文档,我也没有太多使用API的经验,所以我可能会遗漏一些小而明显的东西。
let getPark = (parkCode, cb) => {
let url = `https://developer.nps.gov/api/v1/parks?
parkCode=${parkCode}&api_key=${apiKey}`;
https.get(url, (res) => {
console.log(res.statusCode);
var body = '';
res.on('data', (chunk) => {
body += chunk;
});
res.on('end', () => {
cb(body);
});
});
};
发布于 2018-07-15 08:24:21
在打印res.statusCode
的同时,您还可以打印出res.statusMessage
。当我这样做的时候,我得到了statusMessage: 'Service Temporarily Unavailable'
当我尝试curl
他们给我的示例url时,我得到了同样的东西。所以我不认为这是你的代码。每隔几次它就会给我发一个html页面。也许还没准备好进入黄金时间?
发布于 2018-07-15 08:11:15
任何5xx错误都意味着服务器应用程序由于某种原因而失败。查看https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_errors上的状态代码定义
在你的例子中,我认为你应该看看你的url变量。使用模板文字的方式会导致额外的空格和新行存储在变量中。这可能会导致api服务器出现故障。
试着这样做:
let url = `https://developer.nps.gov/api/v1/parks?` +
`parkCode=${parkCode}&api_key=${apiKey}`;
https://stackoverflow.com/questions/51344320
复制相似问题