使用 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())
});

希望这能解决您的问题。