使用 promise.all() 获取 ID 数组无效
Fetching an array of ID's with promise.all() not working
我正在使用 promise.all() 向 return objects 发出一系列 api 请求。
但是,我得到了 404,我认为这是由于我添加 headers 的方式所致(因为我尝试使用另一个更简单的 API,它不需要身份验证并且工作正常)。
我正在访问的 API 是 UDEMY api。此处的文档:https://www.udemy.com/developers/affiliate/
任何人都可以帮助我使用 headers 完成这项工作吗?
谢谢
getCourseData = () => {
let courseIDs = this.state.beginnerCourseIDs;
let headers = new Headers();
headers.append('Authorization', 'Basic ' + base64.encode("XXUSERKEY:XXSECRETKEY"))
let requests = courseIDs.map(course => {
return fetch(`https://cors-anywhere.herokuapp.com/https://www.udemy.com/api-2.0/courses/${course}/, { headers: ${headers} }` )
});
Promise.all(requests)
.then(responses => responses.forEach(
response => console.log(response)
));
}
目前您的 headers object 正在构成您的 url 字符串的一部分。
您需要将 headers 添加到选项 object,fetch 的第二个参数:
let requests = courseIDs.map(course => {
return fetch(`https://cors-anywhere.herokuapp.com/https://www.udemy.com/api-2.0/courses/${course}/`, { headers })
});
此外,如果 API returns JSON 那么您需要将响应解析为 JSON object:
let requests = courseIDs.map(course => {
return fetch(`https://cors-anywhere.herokuapp.com/https://www.udemy.com/api-2.0/courses/${course}/`, { headers })
.then(res => res.json())
});
希望这能解决您的问题。
我正在使用 promise.all() 向 return objects 发出一系列 api 请求。 但是,我得到了 404,我认为这是由于我添加 headers 的方式所致(因为我尝试使用另一个更简单的 API,它不需要身份验证并且工作正常)。
我正在访问的 API 是 UDEMY api。此处的文档:https://www.udemy.com/developers/affiliate/
任何人都可以帮助我使用 headers 完成这项工作吗? 谢谢
getCourseData = () => {
let courseIDs = this.state.beginnerCourseIDs;
let headers = new Headers();
headers.append('Authorization', 'Basic ' + base64.encode("XXUSERKEY:XXSECRETKEY"))
let requests = courseIDs.map(course => {
return fetch(`https://cors-anywhere.herokuapp.com/https://www.udemy.com/api-2.0/courses/${course}/, { headers: ${headers} }` )
});
Promise.all(requests)
.then(responses => responses.forEach(
response => console.log(response)
));
}
目前您的 headers object 正在构成您的 url 字符串的一部分。
您需要将 headers 添加到选项 object,fetch 的第二个参数:
let requests = courseIDs.map(course => {
return fetch(`https://cors-anywhere.herokuapp.com/https://www.udemy.com/api-2.0/courses/${course}/`, { headers })
});
此外,如果 API returns JSON 那么您需要将响应解析为 JSON object:
let requests = courseIDs.map(course => {
return fetch(`https://cors-anywhere.herokuapp.com/https://www.udemy.com/api-2.0/courses/${course}/`, { headers })
.then(res => res.json())
});
希望这能解决您的问题。