Return Angular 5 中 http.get 的单个项目的 Observable
Return Observable of single item from http.get in Angular 5
我有一项服务可以将请求发送到内存 Web-api。该服务包括一个我想查询(通过查询字符串)单个项目的 API 的方法。
无论在通用 http.get 方法中指定单个项目,我都是 returned 数组。
这不同于当我只return编辑单个项目时使用 ID 而不是查询为单个项目调用 API。
this.http.get<ITrack>(`api/tracks/1`)
.subscribe(track => console.log(JSON.stringify(track)));
returns
{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}
其中
this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
.subscribe(track => console.log(JSON.stringify(track)));
returns
[{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}]
我可以得到对 return 的第二次调用,只是具有以下内容的项目:
this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
.pipe(
map(t => t[0])
)
.subscribe(track => console.log(JSON.stringify(track)));
但是我不能使用像 single 或 first 这样的方法,因为编译器需要 return 类型的 ITrack。
这里 return 单个项目的正确方法是什么?
因此,如果端点总是 returns 一个列表,请调用 get
使用 ITrack
数组键入的方法。
只需将 .get<ITrack>(...)
替换为 .get<ITrack[]>(...)
。
我有一项服务可以将请求发送到内存 Web-api。该服务包括一个我想查询(通过查询字符串)单个项目的 API 的方法。
无论在通用 http.get 方法中指定单个项目,我都是 returned 数组。
这不同于当我只return编辑单个项目时使用 ID 而不是查询为单个项目调用 API。
this.http.get<ITrack>(`api/tracks/1`)
.subscribe(track => console.log(JSON.stringify(track)));
returns
{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}
其中
this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
.subscribe(track => console.log(JSON.stringify(track)));
returns
[{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}]
我可以得到对 return 的第二次调用,只是具有以下内容的项目:
this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
.pipe(
map(t => t[0])
)
.subscribe(track => console.log(JSON.stringify(track)));
但是我不能使用像 single 或 first 这样的方法,因为编译器需要 return 类型的 ITrack。
这里 return 单个项目的正确方法是什么?
因此,如果端点总是 returns 一个列表,请调用 get
使用 ITrack
数组键入的方法。
只需将 .get<ITrack>(...)
替换为 .get<ITrack[]>(...)
。