RXJS - 处理 Instagram 上的 404 错误 API

RXJS - Handling 404 error on Instagram API

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

的 Instagram API

它就像一个魅力,我得到了 JSON 并且我能够按照我需要的方式操作它,但是,当 标签 不存在。我收到 404 错误 (作为 HTML 而不是 JSON) 并且我无法读取 header 以获取 okstatus。我看起来这个错误阻止了获取 response.

的脚本

我正在尝试获取 return 数据或 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;
          }
        )
      );
  }

我认为你应该像这样使用 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,它允许 return 一个空的 observables 被 "map" 函数消耗;)

import { EMPTY } from "rxjs";