Repolode
grpc-ecosystem

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. 1

    Установите плагин gateway с помощью Go

    go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
  2. 2

    Опишите gRPC-сервис в файле .proto с аннотациями google.api.http

  3. 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 обновляется ежедневно.

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