Кроссплатформенный open-source API-клиент для GraphQL, REST, WebSockets, SSE и gRPC с локальным хранением, Git и облачной синхронизацией.
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
Установите модуль Goa (требуется Go 1.27.3 или новее)
go get goa.design/goa/v3@latest - 2
Сгенерируйте код сервера и клиента по вашему описанию
go run goa.design/goa/v3/cmd/goa gen hello/design - 3
Создайте файлы стартового приложения
go run goa.design/goa/v3/cmd/goa example hello/design - 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-агентов.
Python-фреймворк для создания API со стандартными аннотациями типов, автоматической валидацией, документацией OpenAPI и высокой производительностью.
API-шлюз с открытым исходным кодом для проксирования REST- и SOAP-сервисов, развертывания по OpenAPI, преобразования WSDL в OpenAPI, защиты через OAuth2/JWT и валидации сообщений.
Плагин protoc, который генерирует сервер обратного прокси, преобразующий RESTful HTTP-запросы с JSON в gRPC-запросы для сервисов на Go.
Нативный API-клиент с локальным хранением данных для REST, gRPC, GraphQL и WebSocket, написанный на Go и со встроенным прокси трафика.