У меня есть служба, которая отправляет запросы в web-api-память. Служба включает в себя метод, который я хочу запросить (через строку запроса) API для одного элемента.
Независимо от указания одного элемента в общем методе http.get мне возвращается массив.
Это отличается от того, если я вызываю 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.
Как правильно вернуть сюда один товар?