В какой папке лежит транспортный слой

«В какой папке лежит транспортный слой» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go транспортный слой обычно реализуется в отдельном пакете/папке, часто называемом:

  • transport
  • api (если это HTTP API)
  • grpc (для gRPC)

Пример структуры проекта:

project/
  ├── internal/
  │   ├── transport/
  │   │   ├── http/       # HTTP handlers
  │   │   ├── grpc/       # gRPC services
  │   │   └── ...        
  ├── cmd/
  └── ...

Код HTTP-обработчика обычно выглядит так:

// transport/http/user_handler.go
package http

type UserHandler struct {
    service user.Service
}

func (h *UserHandler) GetUser(w http.ResponseWriter, r *http.Request) {
    // обработка запроса
}

Транспортный слой отвечает за:

  • Парсинг входящих запросов
  • Валидацию данных
  • Преобразование в DTO
  • Вызов бизнес-логики (сервисного слоя)