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 以获取 ok
或 status
。我看起来这个错误阻止了获取 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";
我正在使用不使用 OAuth https://www.instagram.com/explore/tags/{tag}?__a=1
它就像一个魅力,我得到了 JSON 并且我能够按照我需要的方式操作它,但是,当 标签 不存在。我收到 404 错误 (作为 HTML 而不是 JSON) 并且我无法读取 header 以获取 ok
或 status
。我看起来这个错误阻止了获取 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";