API Gateway - единая точка входа: маршрутизация по пути/хосту к бэкендам, аутентификация, rate limiting, агрегация ответов. В Go можно реализовать gateway как HTTP-сервер с reverse proxy (httputil.ReverseProxy) и middleware (auth, limit). Или использовать готовые (Kong, Envoy) и конфигурировать. Для простых сценариев достаточно Nginx/Envoy; кастом на Go - при сложной логике маршрутизации и агрегации.
proxy := httputil.NewSingleHostReverseProxy(backendURL)
proxy.Director = func(r *http.Request) {
r.URL.Host = backendURL.Host
r.URL.Scheme = backendURL.Scheme
}
http.Handle("/api/", authMiddleware(proxy))