Об этом проекте

Goa — это ориентированный на дизайн фреймворк для создания сервисов на Go. Вместо того чтобы писать обработчики, клиентов и спецификации по отдельности, вы один раз описываете типы, методы, валидацию и ошибки на DSL, основанном на Go, а генератор создаёт всё остальное. Что генератор создаёт из одного дизайна: - Типизированные интерфейсы сервисов, эндпоинты, клиентов и пограничную валидацию - Обработчики HTTP-сервера, кодировщики/декодировщики, клиентов на Go, CLI-команды и спецификации OpenAPI - Определения Protocol Buffer для gRPC, адаптеры сервера/клиента, сериализацию и CLI-команды - Серверный/клиентский код JSON-RPC, диспетчеризацию запросов, пакеты и уведомления - Поддержку потоковой передачи: WebSocket и SSE для HTTP, SSE для JSON-RPC и потоки gRPC - Именованные представления результатов с кодом для выбора и сериализации форм ответа Одно определение сервиса может предоставлять одну и ту же операцию по HTTP, gRPC и JSON-RPC. Сгенерированные транспорты используют один общий интерфейс сервиса, поэтому бизнес-логика реализуется один раз на обычном Go вне сгенерированного дерева. Изменение дизайна и повторная генерация обновляют обработчики, клиентов, валидацию и спецификации вместе, что уменьшает расхождение между кодом и документацией. В README также освещается рабочий процесс с кодирующим агентом: навык «Goa service designer» можно установить в репозиторий приложения, чтобы направлять изменения дизайна, генерацию, реализацию и проверку. Проект указывает на Goa-AI для создания ИИ-агентов и серверов MCP, которые повторно используют типы Goa и привязывают инструменты к методам сервиса, с движками выполнения в памяти или Temporal. Для начала работы требуется Go 1.26 или более поздняя версия (рекомендуется 1.27.1). Краткое руководство описывает инициализацию модуля, написание дизайна, запуск генератора и примеров команд, а также вызов получившегося сервиса. Для всех трёх транспортов нужны компилятор Protocol Buffer и генераторы protobuf для Go; при первом запуске только с HTTP можно опустить блоки gRPC и JSON-RPC. Документация охватывает справочник по DSL, генерацию кода, руководства по конкретным транспортам, темы для продакшена, такие как схемы безопасности и перехватчики, а также набор примеров приложений. Проект распространяется под лицензией MIT и принимает вклад сообщества.