Я запрашиваю вложенный RESTful API с помощью модуля Angular HttpClient
. Получение полного объекта требует извлечения данных из нескольких конечных точек, ссылки на которые хранятся в ответе на первый запрос.
Я использую forkJoin
для параллельной отправки 2, 3, 4 и т. Д. Запросов. Это прекрасно работает, однако я «теряю» результат первого запроса. Мое текущее решение состоит в том, чтобы включить его в forkJoin
, превратив результат запроса в наблюдаемый через оператор of()
this.http.post(url, geoRequest, httpOptions).pipe(
concatMap(resp => {
return forkJoin(
of(resp),
this.http.get(resp[0]["_links"].endpointA.href, httpOptions),
this.http.get(resp[0]["_links"].endpointB.href, httpOptions)
);
})
);
В результате получается массив с тремя элементами, каждый из которых содержит результат каждого запроса. Отлично. Тем не менее, «воссоздание» первоначальной наблюдаемой (через of(resp)
) выглядит немного странно, и мне интересно, есть ли более элегантное решение для этого.