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

Javascript 如何使用JS正确获取Riot API?,javascript,riot-games-api,Javascript,Riot Games Api,我一直在尝试从riot的api获取一些数据,但我遇到了一个问题: 这是代码的重要部分: const getUsuario = async (name) => { const resp = await fetch(`${APIRUL}${name}${apikey}`, { method: 'GET', mode: 'no-cors', headers: { "Content-Type": "application/jso

我一直在尝试从riot的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();

我发现了一个与您在这里看到的类似的错误:

在将响应转换为json之前,请尝试打印响应,并查看是否显示type
opaque
。这特定于使用模式
无cors
获取请求。对于这种反应,你能做什么似乎有很多限制


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

我发现了一个与您在这里看到的类似的错误:

在将响应转换为json之前,请尝试打印响应,并查看是否显示type
opaque
。这特定于使用模式
无cors
获取请求。对于这种反应,你能做什么似乎有很多限制



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

您确定返回的响应是json类型的吗?老实说,我不确定。但是如果我使用postman,我会得到正确的输出;charset=utf-8您能记录
let textress=wait resp.text()
?您确定返回的响应是json类型的吗?老实说,我不确定。但是如果我使用postman,我会得到正确的输出;charset=utf-8能否记录
let textress=await resp.text()
?如果执行resp.text(),则未定义响应,如果在将其转换为json之前打印响应,则类型为不透明。我不知道该怎么办你确定你的请求url是正确的吗?可能URL/API令牌参数有问题,您会在没有正文的情况下得到403错误。也许…@Knarf这是CORS的事情-服务器可能没有返回一些CORS头。阅读这篇谷歌文章可以得到一个很好的解释:我在《邮递员》中使用了相同的url,得到了我想要的,所以我认为它是正确的。是的,我在别处阅读,似乎就是这样——我更新了我的答案。令人恼火,但至少你知道问题出在哪里:)如果我执行resp.text(),我会得到未定义的响应,如果我在将其转换为json之前打印响应,我会得到类型不透明。我不知道该怎么办你确定你的请求url是正确的吗?可能URL/API令牌参数有问题,您会在没有正文的情况下得到403错误。也许…@Knarf这是CORS的事情-服务器可能没有返回一些CORS头。阅读这篇谷歌文章可以得到一个很好的解释:我在《邮递员》中使用了相同的url,得到了我想要的,所以我认为它是正确的。是的,我在别处阅读,似乎就是这样——我更新了我的答案。很烦人,但至少你知道怎么了:)