Genera SDK de cliente, esqueletos de servidor y documentación en decenas de lenguajes y frameworks a partir de especificaciones OpenAPI (v2 y v3).
grpc-ecosystem/grpc-gateway
Plugin de protoc que genera un servidor proxy inverso para traducir llamadas HTTP RESTful con JSON en solicitudes gRPC para servicios Go.
- Estrellas
- 20,008
- Forks
- 2,415
- Issues abiertos
- 150
- Último commit
- hace 17 horas
¿Qué es?
gRPC-Gateway es un plugin del compilador de Protocol Buffers (protoc) que lee definiciones de servicios protobuf y genera un servidor proxy inverso. El servidor recibe solicitudes RESTful HTTP+JSON y las reenvía a tu servicio gRPC, de modo que una sola implementación puede atender tanto a clientes gRPC como JSON.
El mapeo HTTP se define mediante anotaciones google.api.http en el archivo .proto. Si no hay anotaciones, el generador puede exponer los métodos con un mapeo predeterminado, y un archivo externo de configuración de API gRPC puede proporcionar reglas HTTP cuando no sea posible modificar los archivos proto. El proyecto también incluye protoc-gen-openapiv2 para generar definiciones Swagger 2.0 y una versión alfa, protoc-gen-openapiv3, para generar OpenAPI 3.1.
El código generado depende del paquete de runtime grpc-gateway para Go. Admite parámetros de cadena de consulta y de ruta, solicitudes PATCH mapeadas a field masks, respuestas de streaming como JSON delimitado por saltos de línea y tiempos de espera de gRPC configurados mediante el encabezado Grpc-Timeout.
Funciones clave
- 01Genera un proxy inverso que traduce solicitudes HTTP+JSON en llamadas gRPC.
- 02Mapea rutas HTTP, parámetros de consulta y cuerpos de solicitud a mensajes gRPC mediante anotaciones google.api.http.
- 03Genera definiciones Swagger 2.0 con protoc-gen-openapiv2.
- 04Ofrece un generador alfa de OpenAPI 3.1, protoc-gen-openapiv3.
- 05Traduce solicitudes PATCH en solicitudes gRPC con field masks y transmite respuestas como JSON delimitado por saltos de línea.
Casos de uso
- Exponer un servicio gRPC existente a clientes que solo se comunican mediante JSON sobre REST.
- Mantener una API RESTful por compatibilidad con versiones anteriores mientras se añade gRPC internamente.
- Generar documentación Swagger u OpenAPI directamente a partir de definiciones protobuf.
- Ofrecer un backend gRPC a navegadores o lenguajes con compatibilidad limitada con gRPC.
Inicio rápido
- 1
Instala el plugin gateway con Go
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway - 2
Escribe tu servicio gRPC en un archivo .proto con anotaciones google.api.http
- 3
Genera el código del proxy inverso con protoc o buf usando el plugin
protoc -I . --grpc-gateway_out ./gen/go --grpc-gateway_opt paths=source_relative your/service/v1/your_service.proto
Antes de usarlo
- Solo genera código Go para servicios Go.
- Para generar código, es necesario configurar protoc o buf y la cadena de herramientas de protobuf.
- El generador de OpenAPI 3.1 (protoc-gen-openapiv3) está en fase alfa y su salida puede cambiar.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es grpc-gateway?
- Plugin de protoc que genera un servidor proxy inverso para traducir llamadas HTTP RESTful con JSON en solicitudes gRPC para servicios Go. gRPC-Gateway es un plugin del compilador de Protocol Buffers (protoc) que lee definiciones de servicios protobuf y genera un servidor proxy inverso. El servidor recibe solicitudes RESTful HTTP+JSON y las reenvía a tu servicio gRPC, de modo que una sola implementación puede atender tanto a clientes gRPC como JSON.
- ¿grpc-gateway es gratuito? ¿Qué licencia tiene?
- grpc-gateway es open source bajo la licencia BSD-3-Clause. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿grpc-gateway sigue mantenido?
- Mantenimiento activo. El último commit de grpc-gateway fue el 22 oct 2026.
- ¿Para qué puedo usar grpc-gateway?
- Exponer un servicio gRPC existente a clientes que solo se comunican mediante JSON sobre REST. Mantener una API RESTful por compatibilidad con versiones anteriores mientras se añade gRPC internamente. Generar documentación Swagger u OpenAPI directamente a partir de definiciones protobuf. Ofrecer un backend gRPC a navegadores o lenguajes con compatibilidad limitada con gRPC.
- ¿Cómo se instala grpc-gateway?
- Instala el plugin gateway con Go: go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway Escribe tu servicio gRPC en un archivo .proto con anotaciones google.api.http Genera el código del proxy inverso con protoc o buf usando el plugin: protoc -I . --grpc-gateway_out ./gen/go --grpc-gateway_opt paths=source_relative your/service/v1/your_service.proto
- ¿Dónde consigo grpc-gateway?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/grpc-ecosystem/grpc-gateway
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Herramienta de línea de comandos que genera SDK de clientes API, esqueletos de servidor y documentación HTML a partir de una definición OpenAPI/Swagger.
Un framework ligero de Go para crear microservicios nativos de la nube con transportes HTTP y gRPC unificados, middleware y generación de código basada en Protobuf.
Swagger UI muestra documentación interactiva de API en el navegador a partir de un archivo de especificación OpenAPI/Swagger.
Kit de herramientas OpenAPI/Swagger de código abierto con una referencia interactiva de API, un cliente de API offline-first e integraciones para numerosos frameworks web.
Herramienta de línea de comandos para llamar a servidores gRPC, como curl pero con entradas JSON sobre gRPC y detección de esquemas mediante reflexión del servidor o archivos proto.