Angular RXJS-处理Instagram API上的404错误
我使用的Instagram API不使用OAuthAngular 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)
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";