RXJS-在Instagram API上处理404错误

时间:2019-01-28 15:25:13

标签: angular rest instagram-api

我正在使用不使用OAuth https://www.instagram.com/explore/tags/{tag}?__a=1

的Instagram API

它就像一个符咒一样工作,我得到了JSON,并且能够按照需要的方式对其进行操作,但是,当标签不存在时,我会收到一个错误消息。我收到404错误(作为HTML而不是JSON),但我无法读取标头来获取okstatus。我似乎是因为该错误阻止脚本获取response

我正在尝试获取响应类型以返回数据或返回null(以防止#标签不存在的情况)。

有人可以帮我吗?

getPictures(tag: string) {
    const BASE_URL = 'https://www.instagram.com/explore/tags/' + tag + '?__a=1';
    return this.http.get(BASE_URL)
      .pipe(
        map(
          (response: Response) => {
            console.log(response.headers.values()[0]);
            const data = response.json();
            return data.graphql.hashtag.edge_hashtag_to_media.edges;
          }
        )
      );
  }

1 个答案:

答案 0 :(得分:1)

我认为您应该像这样从RXJS使用catchError

getPictures(tag: string) {
const BASE_URL = 'https://www.instagram.com/explore/tags/' + tag + '?__a=1';
return this.http.get(BASE_URL)
  .pipe(
    catchError((err) => {
      if(err.status === 404)
         //DO SOMETHING
      } 
      return EMPTY;
    ),
    map(
      (response: Response) => {
        console.log(response.headers.values()[0]);
        const data = response.json();
        return data.graphql.hashtag.edge_hashtag_to_media.edges;
      }
    )
  );

}


编辑
关于“ EMPTY”,它来自RXJS,它允许返回一个空的可观察对象,以供“ map”函数使用;)

import { EMPTY } from "rxjs";