这是我试图从https://geocode.xyz/?locate=Warsaw,Poland&json=1
.
当我在浏览器或 Postman 中运行它时,我得到了成功的响应。这是预期的输出片段。
{“标准”:{“地址”:{},“城市”:“华沙”,
“省”:“PL”,“国家”:“波兰”,“邮政”:{},
“信心”:“0.7 " }, "longt" : "21.03539", "alt" : {
"loc" : { "longt" : "21.23400", "prov" : "PL",
"city" : "Warsaw", "countryname" : "波兰”,“邮政”:“05-077”,“地区”:{},“latt”:“52.21890”}},“海拔”:{},“latt”:“52.23275”}
我正在尝试使用 nodejs 获得相同的输出。我尝试了默认的 https 和请求模块,但无济于事。这就是我所拥有的:
const request = require('request');
request('https://geocode.xyz/?locate=Warsaw,Poland&json=1', { json: true }, (err, res, body) => {
if (err) { return console.log(err); }
console.log(body);
});
这是我看到的输出:
{ 成功:错误,错误:{ 代码:'006',消息:'请求受到限制。' } }
免费版的 API 预计每秒只有 1 个请求。
限制 API 访问是免费的。速率限制:每秒最多 1 个 API 调用。API(限制为所有空闲端口用户每秒不超过 1 个请求。例如,如果 2 个免费请求同时到来,每个请求每个请求限制为 2 秒)。
如何限制我的代码只发送一个请求?使用浏览器/邮递员时如何获得响应。如何使用 nodejs 实现相同的预期成功响应?
这也是我尝试使用 https 并得到相同响应的方法:
const https = require('https');
https.get('https://geocode.xyz/?locate=Warsaw,Poland&json=1', (resp) => {
let data = '';
// A chunk of data has been recieved.
resp.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', () => {
console.log(JSON.parse(data));
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
(...) 对于所有未经身份验证的用户,每秒不超过 1 个请求
您必须创建一个帐户,获取 API 密钥并使用它。你的问题应该得到解决。
您有 10 个请求/秒的免费计划。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句