我正在使用不使用OAuth https://www.instagram.com/explore/tags/{tag}?__a=1
它就像一个符咒一样工作,我得到了JSON,并且能够按照需要的方式对其进行操作,但是,当标签不存在时,我会收到一个错误消息。我收到404错误(作为HTML而不是JSON),但我无法读取标头来获取ok
或status
。我似乎是因为该错误阻止脚本获取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;
}
)
);
}
答案 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";