簡體   English   中英

從Angular 5中的http.get返回單個項目的Observable

[英]Return Observable of single item from http.get in Angular 5

我有一項將請求發送到內存Web API的服務。 該服務包括一個我想查詢(通過查詢字符串)單個項目的API的方法。

無論在通用的http.get方法中指定單個項目,我都會返回一個數組。

這與我僅返回單個項目時使用ID而不是查詢使用單個項目的API調用API的情況不同。

this.http.get<ITrack>(`api/tracks/1`)
  .subscribe(track => console.log(JSON.stringify(track)));

退貨

{"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)));

退貨

[{"id":1,"artist":"Radiohead","name":"OK Computer","durationSeconds":61,"nominator":null,"playlistPosition":1}]

我可以接到第二個電話,只返回以下內容:

this.http.get<ITrack>(`api/tracks/?playlistPosition=1`)
.pipe(
  map(t => t[0])
)
.subscribe(track => console.log(JSON.stringify(track)));

但是,我不能使用諸如single或first之類的方法,因為編譯器希望返回的是ITrack類型。

在這里退貨的正確方法是什么?

因此,如果端點始終返回列表,請調用以ITrack鍵入的get方法。

只需將.get<ITrack>(...)替換為.get<ITrack[]>(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM