Repolode
goadesign

goadesign/goa

Goa — Go-фреймворк с подходом design-first: он генерирует HTTP-, gRPC- и JSON-RPC-сервисы, клиенты и спецификации OpenAPI/protobuf из единого Go-контракта.

Звёзды
6,120
Форки
582
Открытые issues
37
Последний коммит
3 дня назад

Что это?

В Goa типы, операции и правила валидации описываются один раз с помощью Go DSL. По этому описанию фреймворк генерирует серверный и клиентский код для HTTP, gRPC и JSON-RPC, CLI-клиент, спецификации OpenAPI и определения Protocol Buffer. Все транспорты используют один и тот же сгенерированный интерфейс сервиса, поэтому документация API не расходится с кодом.

Разработчики пишут только бизнес-логику в собственных Go-файлах, которые хранятся отдельно от генерируемого каталога gen/. Если изменить поле или правило валидации в описании и запустить генерацию заново, вместе обновятся обработчики, клиенты, валидация и спецификации. В проекте также есть skill для coding agents, который помогает вносить изменения в описание API, запускать генерацию и проверять результат.

У Goa есть сопутствующий проект Goa-AI для создания AI-агентов и MCP-серверов, использующих те же определения типов.

Ключевые возможности

  • 01Генерирует транспорты HTTP, gRPC и JSON-RPC по единому описанию на Go
  • 02Автоматически создаёт Go-клиенты, CLI-клиент и валидацию запросов
  • 03Генерирует спецификации OpenAPI и определения Protocol Buffer
  • 04Поддерживает потоковую передачу через WebSocket, SSE и потоки gRPC
  • 05Позволяет хранить код реализации отдельно от сгенерированного кода

Сценарии использования

  • Создание микросервиса на Go, которому нужно предоставлять REST- и gRPC-эндпоинты
  • Поддержание документации OpenAPI в соответствии с Go API без ручного написания спецификаций
  • Внесение изменений в API с помощью coding agents: агент редактирует типизированный контракт, после чего запускается генерация

Быстрый старт

  1. 1

    Установите модуль Goa (требуется Go 1.27.3 или новее)

    go get goa.design/goa/v3@latest
  2. 2

    Сгенерируйте код сервера и клиента по вашему описанию

    go run goa.design/goa/v3/cmd/goa gen hello/design
  3. 3

    Создайте файлы стартового приложения

    go run goa.design/goa/v3/cmd/goa example hello/design
  4. 4

    Запустите сервис на порту 8000

    go run ./cmd/hello --http-port=8000

Что важно знать

  • Требуется Go 1.27.3 или новее.
  • Для использования gRPC или JSON-RPC необходимо установить компилятор Protocol Buffer и генераторы protobuf для Go. При первом запуске можно обойтись только HTTP.

В подборках

Темы

Частые вопросы

Что такое goa?
Goa — Go-фреймворк с подходом design-first: он генерирует HTTP-, gRPC- и JSON-RPC-сервисы, клиенты и спецификации OpenAPI/protobuf из единого Go-контракта. В Goa типы, операции и правила валидации описываются один раз с помощью Go DSL. По этому описанию фреймворк генерирует серверный и клиентский код для HTTP, gRPC и JSON-RPC, CLI-клиент, спецификации OpenAPI и определения Protocol Buffer. Все транспорты используют один и тот же сгенерированный интерфейс сервиса, поэтому документация API не расходится с кодом.
goa можно использовать бесплатно? Какая у него лицензия?
goa распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
goa всё ещё поддерживается?
Активно поддерживается. Последний коммит в goa — 3 нояб. 2026 г..
Для чего можно использовать goa?
Создание микросервиса на Go, которому нужно предоставлять REST- и gRPC-эндпоинты Поддержание документации OpenAPI в соответствии с Go API без ручного написания спецификаций Внесение изменений в API с помощью coding agents: агент редактирует типизированный контракт, после чего запускается генерация
Как установить goa?
Установите модуль Goa (требуется Go 1.27.3 или новее): go get goa.design/goa/v3@latest Сгенерируйте код сервера и клиента по вашему описанию: go run goa.design/goa/v3/cmd/goa gen hello/design Создайте файлы стартового приложения: go run goa.design/goa/v3/cmd/goa example hello/design Запустите сервис на порту 8000: go run ./cmd/hello --http-port=8000
Где скачать goa?
Исходный код и инструкции по установке — на GitHub: https://github.com/goadesign/goa

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Самостоятельно размещаемый API-шлюз и платформа управления на PHP: превращает базы данных и бизнес-логику в REST API и поддерживает MCP для AI-агентов.

2,1 тыс.+1 за неделю247PHPApache-2.0Обновлён 11 дней назад

Python-фреймворк для создания API со стандартными аннотациями типов, автоматической валидацией, документацией OpenAPI и высокой производительностью.

104,4 тыс.+187 за неделю10,2 тыс.PythonMITОбновлён вчера

API-шлюз с открытым исходным кодом для проксирования REST- и SOAP-сервисов, развертывания по OpenAPI, преобразования WSDL в OpenAPI, защиты через OAuth2/JWT и валидации сообщений.

657+1 за неделю186JavaApache-2.0Обновлён вчера