Извлечение массива идентификаторов, если не работает promise.all () - PullRequest
0 голосов
/ 22 января 2020

Я делаю серию запросов API для возврата объектов на основе их идентификатора, используя обещание .all (). Тем не менее, я получаю 404, что, я думаю, связано с тем, как я добавил свои заголовки (как я пытался с другим более простым API, который не требует аутентификации, и он работает нормально).

API я получаю доступ к API UDEMY. Документация здесь: https://www.udemy.com/developers/affiliate/

Может кто-нибудь помочь мне сделать эту работу с заголовками? Спасибо.

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)
  ));
}

1 Ответ

1 голос
/ 22 января 2020

В настоящее время ваш объект заголовков является частью вашей строки URL.

Вам нужно будет добавить свои заголовки к объекту параметров, второй аргумент для fetch :

let requests = courseIDs.map(course => { 
  return fetch(`https://cors-anywhere.herokuapp.com/https://www.udemy.com/api-2.0/courses/${course}/`, { headers })
});

Кроме того, если API возвращает JSON, вам необходимо проанализировать ответ как JSON объект:

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

Надеемся, это решит вашу проблему.

...