如何使用 JS 正确获取 Riot API?

How can I correctly fetch the Riot API with JS?

我一直在尝试从暴乱的 api 中获取一些数据,但我遇到了一个问题:

这是代码的重要部分:

const getUsuario = async (name) => {
  const resp = await fetch(`${APIRUL}${name}${apikey}`, {
    method: 'GET',
    mode: 'no-cors',
    headers: {
      "Content-Type": "application/json",
    },
  });
  const { data } = await resp.json();
  return data;
};

getUsuario("user-name");

如果我输入 模式:cors。我的 CORS 有问题,但是如果我有上面的例子,它会显示:

champions.js:15 Uncaught (in promise) SyntaxError: Unexpected end of input
    at getUsuario (champions.js:15)

这是第 15 行:

const { data } = await resp.json();

我发现了与您在此处看到的类似的错误:fetch() unexpected end of input

在将响应转为 json 之前尝试打印响应,看看是否看到类型 opaque。这特定于使用模式 no-cors 发出的获取请求。您可以使用这种响应执行的操作似乎有很多限制。

更新:RiotGames api 服务器没有 return CORS headers 是有原因的。他们很可能不希望您直接从浏览器访问他们的 API。您需要有一个后端为您发出那些 api 请求,然后可以将响应转发给您的前端。