如何使用 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 请求,然后可以将响应转发给您的前端。
我一直在尝试从暴乱的 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 请求,然后可以将响应转发给您的前端。