Генерирует SDK клиентов API, серверные заготовки и документацию на десятках языков и для разных фреймворков по спецификациям OpenAPI 2.0 и 3.0.
grpc-ecosystem/grpc-gateway
Плагин protoc, который генерирует сервер обратного прокси, преобразующий RESTful HTTP-запросы с JSON в gRPC-запросы для сервисов на Go.
- Звёзды
- 20,008
- Форки
- 2,415
- Открытые issues
- 150
- Последний коммит
- 16 часов назад
Что это?
gRPC-Gateway — это плагин для компилятора Protocol Buffers (protoc), который читает определения сервисов в protobuf и генерирует сервер обратного прокси. Сервер принимает RESTful-запросы HTTP+JSON и перенаправляет их в ваш gRPC-сервис, поэтому одна реализация может обслуживать клиентов и по gRPC, и по JSON.
Правила сопоставления HTTP задаются аннотациями google.api.http в файле .proto. Если аннотаций нет, генератор всё равно может предоставить доступ к методам с помощью сопоставления по умолчанию; если изменить proto-файлы нельзя, HTTP-правила можно задать во внешнем файле конфигурации gRPC API. В проект также входит protoc-gen-openapiv2 для создания спецификаций Swagger 2.0 и альфа-версия protoc-gen-openapiv3 для генерации OpenAPI 3.1.
Сгенерированный код зависит от runtime-пакета grpc-gateway для Go. Поддерживаются параметры строки запроса и пути, преобразование PATCH-запросов в маски полей, потоковые ответы в формате JSON с разделителями-новыми строками и таймауты gRPC, задаваемые через заголовок Grpc-Timeout.
Ключевые возможности
- 01Генерирует обратный прокси, преобразующий HTTP+JSON-запросы в вызовы gRPC.
- 02Сопоставляет HTTP-пути, параметры запроса и тела запросов с сообщениями gRPC с помощью аннотаций google.api.http.
- 03Генерирует спецификации Swagger 2.0 с помощью protoc-gen-openapiv2.
- 04Предоставляет альфа-генератор OpenAPI 3.1 — protoc-gen-openapiv3.
- 05Преобразует PATCH-запросы в gRPC-запросы с масками полей и передаёт потоковые ответы в формате JSON с разделителями-новыми строками.
Сценарии использования
- Предоставление существующего gRPC-сервиса клиентам, которые поддерживают только JSON по REST.
- Сохранение RESTful API для обратной совместимости при добавлении gRPC во внутреннюю инфраструктуру.
- Генерация документации Swagger или OpenAPI напрямую из определений protobuf.
- Предоставление доступа к gRPC-бэкенду из браузеров или языков с ограниченной поддержкой gRPC.
Быстрый старт
- 1
Установите плагин gateway с помощью Go
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway - 2
Опишите gRPC-сервис в файле .proto с аннотациями google.api.http
- 3
Сгенерируйте код обратного прокси с помощью плагина через protoc или buf
protoc -I . --grpc-gateway_out ./gen/go --grpc-gateway_opt paths=source_relative your/service/v1/your_service.proto
Что важно знать
- Генерирует только код на Go для сервисов на Go.
- Для генерации кода требуется настроить protoc или buf и инструментарий protobuf.
- Генератор OpenAPI 3.1 (protoc-gen-openapiv3) находится в альфа-версии, поэтому его вывод может измениться.
В подборках
Темы
Частые вопросы
- Что такое grpc-gateway?
- Плагин protoc, который генерирует сервер обратного прокси, преобразующий RESTful HTTP-запросы с JSON в gRPC-запросы для сервисов на Go. gRPC-Gateway — это плагин для компилятора Protocol Buffers (protoc), который читает определения сервисов в protobuf и генерирует сервер обратного прокси. Сервер принимает RESTful-запросы HTTP+JSON и перенаправляет их в ваш gRPC-сервис, поэтому одна реализация может обслуживать клиентов и по gRPC, и по JSON.
- grpc-gateway можно использовать бесплатно? Какая у него лицензия?
- grpc-gateway распространяется с открытым исходным кодом под лицензией BSD-3-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- grpc-gateway всё ещё поддерживается?
- Активно поддерживается. Последний коммит в grpc-gateway — 22 окт. 2026 г..
- Для чего можно использовать grpc-gateway?
- Предоставление существующего gRPC-сервиса клиентам, которые поддерживают только JSON по REST. Сохранение RESTful API для обратной совместимости при добавлении gRPC во внутреннюю инфраструктуру. Генерация документации Swagger или OpenAPI напрямую из определений protobuf. Предоставление доступа к gRPC-бэкенду из браузеров или языков с ограниченной поддержкой gRPC.
- Как установить grpc-gateway?
- Установите плагин gateway с помощью Go: go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway Опишите gRPC-сервис в файле .proto с аннотациями google.api.http Сгенерируйте код обратного прокси с помощью плагина через protoc или buf: protoc -I . --grpc-gateway_out ./gen/go --grpc-gateway_opt paths=source_relative your/service/v1/your_service.proto
- Где скачать grpc-gateway?
- Исходный код и инструкции по установке — на GitHub: https://github.com/grpc-ecosystem/grpc-gateway
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
CLI-инструмент для генерации SDK клиентов API, серверных заглушек и HTML-документации по спецификации OpenAPI/Swagger.
Лёгкий Go-фреймворк для облачных микросервисов с единым транспортом HTTP и gRPC, middleware и генерацией кода на основе Protobuf.
Swagger UI отображает в браузере интерактивную документацию API на основе спецификации OpenAPI/Swagger.
Набор инструментов с открытым исходным кодом для OpenAPI/Swagger: интерактивная справка по API, API-клиент с приоритетом работы офлайн и интеграции со многими веб-фреймворками.
CLI-инструмент для вызова gRPC-серверов: принимает JSON, как curl, и находит схемы через server reflection или proto-файлы.