【发布时间】:2020-12-16 01:23:08
【问题描述】:
我想知道为什么我一直收到"GET https://ipinfo.io/ 429" 和
createError.js:17 Uncaught (in promise) Error: Request failed with status code 429
at createError (createError.js:17)
at settle (settle.js:19)
at XMLHttpRequest.handleLoad (xhr.js:78)
错误。我试图弄清楚如何通过 react 使用 promise 和 async wait 来调用 ipinfo.io 的 api。
我在文档上看到了这个 jquery 版本,但我正在尝试使用 axios:
$.get("https://ipinfo.io", function(response) {
console.log(response.ip, response.country);
}, "jsonp")
这是我使用回调调用它的方式:
componentDidMount() {
this.getData();
}
getData() {
axios.get("https://ipinfo.io", (response) => {
console.log(response.ip, response.country);
}, "jsonp");
}
这是我通过 async await 调用它的方式:
componentDidMount() {
this.getData();
}
async getData() {
const response = await axios.get("https://ipinfo.io");
console.log(response.ip);
}
知道我在这里做错了什么吗?
谢谢!
【问题讨论】:
-
1.要获取 json,您需要请求
https://ipinfo.io/json(或者您将加载他们的主页) 2. API 用于后端,这意味着 React 是客户端,您将收到 CORS 错误 -
“如果您在 24 小时内超过 1,000 个请求,我们将向您返回 429 HTTP 状态代码”
-
ipinfo 暴露了中间件库,它应该集成到中间件中,并作为 API 暴露出来,供前端 React 使用。 ipinfo.io/developers
-
这对我有用:codesandbox.io/s/interesting-kowalevski-g9vdr(但我猜 xadm 找到了真正的原因)
-
这很有趣,我还没有请求大约 1k 个请求,但它仍然显示 xhr.js:173 GET cors-anywhere.herokuapp.com/https://ipinfo.io/json 429 (Too Many Requests)
标签: javascript reactjs axios