Agregação de dados na 'Gateway' da API
por exemplo, o Frontend chama o API Gateway e o API Gateway chama dois microservices clientes e encomendam microservices. O cliente microservice devolve os detalhes do cliente e ordena o microservice devolve todos os produtos encomendados pelo cliente.
Este é o formato devolvido pela 'Gateway' da API após agregação de dois microservice usando a gestão da API Ocelot ou Azure.
Formato 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"
}
]
}
]
}
o formato que eu quero é o formato 2.
Formato 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"
}
]
}
]
}
o segundo formato é possível usando Ocelot, mas a junção de dados é baseada no ids no Gateway e requer algum processamento.
É uma boa prática agregar dados sobre Gateway utilizando a lógica empresarial. Em caso negativo, que práticas devem ser seguidas para este tipo de agregação?seria bom se pudesse fornecer algumas referências para alcançar esta agregação utilizando a gestão da API Azure.
1 answers
Isto é conhecido como API Composição ou infra-estrutura para Frontend . Eu diria que é bom agregar dados usando o Gateway API porque permite que seus clientes API usem uma interface API mais simples. O mapeamento real seria feito no Gateway API.
No entanto, quando você acorrentar vários microservices juntos em uma API Web, a falha de um serviço fará com que toda a API Web falhe. Uma solução alternativa (e mais complexa) é criar um microservice que agrega os conjuntos de dados dos outros microservices e expõe uma única API que mostra os dados Unidos. See - CQRS pattern.
Uma referência para como você pode implementar isso em Azure é API agregação usando Azure API Management .