Intermediate LevelREST APIs & Web Services
What is the Backend-For-Frontend (BFF) pattern and when should you use it?
❓ Interview Prompt: Explain Backend-For-Frontend (BFF) architectural pattern, tailoring API gateways per client type (Web, iOS, Android, IoT), and reducing over-fetching.
Instead of forcing a single monolithic API Gateway to serve desktop web, iOS, and IoT clients simultaneously, the Backend-For-Frontend (BFF) pattern creates dedicated lightweight gateways for each specific client type:
Benefits:
•
Client-Optimized Payloads: Mobile BFF aggregates multiple microservice calls into 1 compact JSON payload customized for small mobile screens.
•
Independent Deployment: Web team and Mobile team maintain their own BFF gateways without waiting on backend team releases.
Code Implementation Example
typescript
// Mobile BFF Aggregator Endpoint (Combines 3 microservice calls into 1 payload)
app.get('/mobile-bff/dashboard', async (req, res) => {
const [user, orders, notifications] = await Promise.all([
userService.getUser(req.user.id),
orderService.getRecentOrders(req.user.id),
notificationService.getUnread(req.user.id)
]);
res.json({ name: user.name, orderCount: orders.length, unread: notifications.length });
});💡Aggregating multiple microservice calls inside a Mobile BFF endpoint.
🎯 Interview Key Takeaway
Use the Backend-For-Frontend (BFF) pattern to build client-specific API gateways that aggregate and optimize response payloads.
#BFF Pattern#API Gateway#Microservices#Intermediate
Back to all REST APIs & Web Services Questions→