【问题标题】:Calling ipinfo.io with promise and async (REACT)使用 promise 和异步调用 ipinfo.io (REACT)
【发布时间】: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


【解决方案1】:
  1. 免费注册https://ipinfo.io/
  2. 获取 ipinfo 访问令牌
  3. 像这样使用它:
axios.get(`https://ipinfo.io/json?token=${ipinfo_token}`)
  .then(response => {
    console.log(response.data.ip);
  })
  .catch(e => {
    console.log(e);
  });

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 2019-06-04
    • 1970-01-01
    • 2021-06-28
    • 2018-01-14
    • 2019-04-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多