Angular RXJS-处理Instagram API上的404错误

Angular RXJS-处理Instagram API上的404错误,angular,rest,instagram-api,Angular,Rest,Instagram Api,我使用的Instagram API不使用OAuthhttps://www.instagram.com/explore/tags/{tag}?\uuu a=1 它就像一个符咒,我得到了JSON,我能够以我需要的方式操作它,但是,当标记不存在时,我得到了一个错误。我得到404错误(作为HTML而不是JSON),我无法读取标题以获得ok或状态。我认为该错误会阻止脚本获取响应 我试图让响应类型返回数据或null(以防hashtag不存在) 有人能帮我吗 getPictures(tag: string)

我使用的Instagram API不使用OAuth
https://www.instagram.com/explore/tags/{tag}?\uuu a=1

它就像一个符咒,我得到了JSON,我能够以我需要的方式操作它,但是,当标记不存在时,我得到了一个错误。我得到404错误(作为HTML而不是JSON),我无法读取标题以获得
ok
状态。我认为该错误会阻止脚本获取
响应

我试图让响应类型返回数据或null(以防hashtag不存在)

有人能帮我吗

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

我认为您应该像这样使用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”函数使用;)


哥们,这工作完美无瑕。非常感谢您的帮助。@iconio不客气,我编辑了我的答案以添加“返回空”的目的;)嘿@Ben bro快速提问。。。如果出现错误,有没有办法阻止执行
map
?@iconio我不确定,但你可以尝试使用其中一种(从不执行或抛出):但是如果它不起作用,请尝试处理这样一个事实:在你的map中,如果返回空,响应值将为空,那么简单的if to not execute代码将起作用..明白了。我去看看。我真的很感谢你的帮助,巴德!
import { EMPTY } from "rxjs";