BFF (Backend for Frontend) в Go.

Ответ

BFF - отдельный бэкенд под конкретный клиент (веб, мобильное приложение), агрегирует вызовы к микросервисам и адаптирует ответы. В Go BFF - HTTP-сервер: принимает запрос от клиента, вызывает несколько сервисов (параллельно где возможно), собирает ответ в нужном формате. Уменьшает число запросов с клиента и скрывает детали внутренних API.

func (b *BFF) GetDashboard(ctx context.Context, userID string) (*Dashboard, error) {
    var orders *Orders
    var profile *Profile
    g, ctx := errgroup.WithContext(ctx)
    g.Go(func() error { orders, _ = b.orders.GetByUser(ctx, userID); return nil })
    g.Go(func() error { profile, _ = b.profile.Get(ctx, userID); return nil })
    if err := g.Wait(); err != nil { return nil, err }
    return &Dashboard{Orders: orders, Profile: profile}, nil
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.