API Compositie Patroon wordt gebruikt wanneer de gegevens voor de frontend of een externe service moeten worden geaggregeerd vanuit verschillende microservices. Dit wordt gerealiseerd via een coördinatielaag (API Composer), die de benodigde gegevens verzamelt door afzonderlijke verzoeken naar de benodigde services en een uiteindelijke respons samenstelt.
Vaak wordt deze laag geïmplementeerd als een aparte service, Gateway of BFF (Backend For Frontend), die zorgt voor aggregatie, transformatie en foutverwerking. Deze oplossing vermindert overbodige netwerkoproepen en isoleert klanten van wijzigingen in interne API's.
Voorbeeldcode (in Node.js + Express):
const axios = require('axios'); app.get('/user-details/:id', async (req, res) => { const user = await axios.get(`http://usersvc/user/${req.params.id}`); const orders = await axios.get(`http://ordersvc/orders/user/${req.params.id}`); res.json({ user: user.data, orders: orders.data }); });
Belangrijke kenmerken:
Is API-compositie altijd de beste manier om gegevens uit microservices te combineren?
Nee, bij een groot aantal gerelateerde entiteiten en trage verbindingen kan de prestaties lijden. In sommige gevallen is het beter om CQRS of Data Aggregator services te gebruiken.
Kan de frontend rechtstreeks verbinding maken met elke microservice?
In kleine systemen is dit mogelijk, maar bij de groei van het systeem ontstaan er vragen over beveiliging, schema-management, schaalbaarheid en overbelasting van de frontend met aggregatielogica. Daarom is een gecentraliseerde aggregatielaag de voorkeur.
Biedt API-compositie transactionele integriteit tussen services?
Nee. Dit patroon aggregeert alleen gegevens voor de aanvraag. Transactionaliteit moet worden geïmplementeerd via sagas of eventmechanismen.