Angular 8 не могу получить данные из API всегда возвращать 404 - PullRequest
0 голосов
/ 28 февраля 2020
  1. Я использую API от twitch.

  2. Я проверил API на почтальоне, его работа корректно

  3. Я тестировал другой API на моих angular 8 проектах по-прежнему работает правильно.

    Пример

    {_total: 35, videos: Array (10)}

       zone.js:3372 XHR finished loading: GET"https://api.twitch.tv/kraken/channels/TWITCH_ID_IS_HERE/videos".
    

    экзаменационный пост данные из API

4.Это возвращение набора данных из сломанного API-интерфейса службы

      body: {
          error: "'users' with id='follows' not found"
      }, 
      url: "https://api.twitch.tv/helix/users/follows?
       to_id=TWITCH_ID_IS_HERE&first=100", 
      headers: HttpHeaders, 
      status: 404, 
      statusText: "Not Found"
    }

5.сервисная функция

  async getUserFollows(twitchId) {
    return new Promise((resolve, reject) => {
        this.http.get('https://api.twitch.tv/helix/users/follows', {
            headers: new HttpHeaders({
                'Client-ID': this.clientId
            }), params: new HttpParams()
                .set('to_id', twitchId)
                .set('first', '100')
            }).subscribe(
                (res: any) => {
                    resolve(res);
                }, err => {
                    reject(err);
                }
            );
        }
    );
  }

Что мне делать? Чего мне не хватает?

1 Ответ

0 голосов
/ 28 февраля 2020

Удалить ключевое слово async, потому что вы уже используете Обещание.

Запрос никогда не запускается, потому что вы возвращаете Обещание Обещания (и поскольку никто не слушает внешнее Обещание, он никогда не будет запущен ).

Вы бы поймали эту ошибку, если бы набрали тип возвращаемого значения функции - это хорошая практика, которую вы могли бы рассмотреть.

Кстати, ваш код будет чище, если использовать

this.http.get<...>(...)
         .pipe(..., catchError(...))
         .toPromise();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...