объединить результаты двух вызовов http.get с помощью rxjs - PullRequest
1 голос
/ 03 мая 2020

Я звоню в два разных API (два разных интернет-магазина), каждый возвращает одинаковые данные. Оба имеют некоторую информацию о нумерации страниц, а также вложенный массив элементов (список заказов). Мне нужно объединить эти объекты, чтобы отобразить законченный список предметов в порядке даты покупки. Мне также нужно выяснить, как поддерживать данные разбивки на страницы, потому что списки слишком велики, чтобы их можно было полностью заполнить, поэтому мне придется получать дополнительные данные от обоих вызовов для заполнения последующих страниц.

Я использую angular с rx js. Объекты выглядят так:

Первый ответ:

```{
"startIx": 0,
"page": 1,
"orders":[
    {"orderNumber":"756984",
    "date":"2020-04-02",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":7.84,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756985",
    "date":"2020-04-03",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":8.54,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
        }]}],
"totalOrders":2
}```

Второй ответ:

```{
"startIx": 0,
"page": 1,
"orders":[
    {"orderNumber":"756984",
    "date":"2020-04-02",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":7.84,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756985",
    "date":"2020-04-03",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":8.54,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
        }]}],
"totalOrders":2
}```

Желаемый результат выглядит примерно так: все заказы из второго ответа добавлены в него и общее количество обновлено ..

```{
"startIx": 0,
"page": 1,
"orders":[
    {"orderNumber":"756984",
    "date":"2020-04-02",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":7.84,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756985",
    "date":"2020-04-03",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":8.54,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756984",
    "date":"2020-04-02",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":7.84,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]},
    {"orderNumber":"756985",
    "date":"2020-04-03",
    "status":"ORDER_PARTIALLY_PROCESSED",
    "price":8.54,
    "links":[
        {"rel":"store.order",
        "href":"history.jsf"
    }]}],
"totalOrders":4
}```

Я очень новичок в angular и особенно в rx js и ngrx, поэтому я ищу несколько советов о том, какой наилучший метод будет комбинироваться списки.

1 Ответ

2 голосов
/ 03 мая 2020
  1. разные API (два разных интернет-магазина) используют "forkjoin"
  2. объединяют эти объекты для отображения

    1. forkJoin([api1, api2]).subscribe(response => {
    // response[0] is api1(response)
    // response[1] is api2(response)
    // 2. combine both response data to display
    });
    

образец-forkjoin

...