Я работаю над микросервисной архитектурой и хочу объединить данные из двух микросервисов.
Например, Frontend вызывает API-шлюз, а API-шлюз вызывает два микросервиса: микросервисы Customer и Order. Микросервис клиента возвращает данные клиента, а микросервис заказа возвращает все заказанные продукты клиентом.
Это формат, возвращаемый API-шлюзом после агрегирования из двух микросервисов с использованием Ocelot или Azure API Management.
Формат 1
{
"Customers":[
{
"customerId":1001,
"customerName":"Tom"
},
{
"customerId":1002,
"customerName":"Jerry"
}
],
"Orders":[
{
"CustomerId":1001,
"Orders":[
{
"ProductId":"PRO1",
"ProductName":"Books"
},
{
"ProductId":"PRO2",
"ProductName":"Pens"
}
]
},
{
"CustomerId":1002,
"Orders":[
{
"ProductId":"PRO3",
"ProductName":"Pencils"
},
{
"ProductId":"PRO4",
"ProductName":"Toys"
}
]
}
]
}
Требуемый формат: формат 2.
Формат 2
{
"OrderDetails":[
{
"customerId":1001,
"customerName":"Tom",
"Orders":[
{
"ProductId":"PRO1",
"ProductName":"Books"
},
{
"ProductId":"PRO2",
"ProductName":"Pens"
}
]
},
{
"customerId":1002,
"customerName":"Jerry",
"Orders":[
{
"ProductId":"PRO3",
"ProductName":"Pencils"
},
{
"ProductId":"PRO4",
"ProductName":"Toys"
}
]
}
]
}
Второй формат достижим при использовании Ocelot, но объединение данных основано на идентификаторах на шлюзе и требует некоторой обработки.
Это хорошая практика для агрегирования данных на шлюзе с использованием бизнес-логики. Если нет, какие методы следует использовать для такого рода агрегации?
Было бы неплохо, если бы вы могли предоставить некоторые ссылки для достижения этой агрегации с помощью Azure API Management.