【发布时间】:2020-06-04 18:30:21
【问题描述】:
我的目标是生成一个有效的 observable(来自 GET 请求)并订阅它,这样我就可以在我的应用程序的多个不同组件中使用一次请求的数据。
我希望来自服务器的 JSON 结构如下:
{
"one": {
"some": "variable",
"more": "variables"
},
"two": {
"a": "variable",
"b": "variable"
},
"three": {
"things": [
{
"some": "variable",
"more": "variables
},
{
"some": "variable",
"more": "variables"
}
],
"peoples": [
{
"again": "variables",
"women": {
"next": "variable"
},
"man": {
"last": "variable"
}
}
]
}
}
今天接近: 根据Angular Documentation on Requesting a typed response,我在名为 api.service 的服务的 typescript 中定义了一些数据接口:
export interface Response {
one: One;
two: Two;
three: Three;
}
export interface One {
some: string;
more: string;
}
export interface Two {
a: string;
b: string;
}
export interface Three {
things: Thing[];
peoples: People[];
}
export interface Thing {
some: string;
more: string;
}
export interface People {
again: string;
women: Women;
men: Men;
}
export interface Women {
next: string;
}
export interface Men {
last: string;
}
并编写了一个向服务中给定的 url 发送请求的函数:
export classApiService {
private url = 'https://example.com/api/1234';
constructor(private http: HttpClient) { }
getApiResponse() {
// returns Observable of Type Response
return this
.http
.get<Response>(this.url)
}
现在出现了一个大问题:这种方法有效吗?如果是,我如何正确订阅 getApiResponse() 返回的 Observable,以便我可以例如访问接口Women的变量next?
【问题讨论】:
-
“这个方法有效吗?” - 你试过了吗?它工作了吗? “我如何正确订阅” -
.subscribe? -
@jonrsharpe “这个方法有效吗?” - 尝试过,有效,但将界面放入“好的甚至最佳实践”的界面? “我如何正确订阅?” - 使用
.subscribe很明显,但是我什么时候需要对其进行类型转换才能访问文档中提到的属性? -
鉴于这是文档显示的内容,为什么会有问题? do 你需要输入任何东西吗?您的接口不包含无法直接从 JSON 反序列化的任何内容;没有日期属性、方法等。
标签: angular typescript observable httprequest angular-cli