OpenAPI 사양으로 수십 가지 언어와 프레임워크의 API 클라이언트 SDK, 서버 스텁, 문서를 생성합니다.
grpc-ecosystem/grpc-gateway
Go 서비스의 RESTful JSON HTTP 요청을 gRPC 요청으로 변환하는 리버스 프록시 서버를 생성하는 protoc 플러그인입니다.
- 스타
- 20,008
- 포크
- 2,415
- 열린 이슈
- 150
- 마지막 커밋
- 14시간 전
어떤 프로젝트인가요?
gRPC-Gateway는 Protocol Buffers 컴파일러(protoc)용 플러그인으로, protobuf 서비스 정의를 읽어 리버스 프록시 서버를 생성합니다. 이 서버는 RESTful HTTP+JSON 요청을 받아 gRPC 서비스로 전달하므로, 하나의 구현으로 gRPC 클라이언트와 JSON 클라이언트를 모두 지원할 수 있습니다.
HTTP 매핑은 .proto 파일의 google.api.http 어노테이션을 기반으로 합니다. 어노테이션이 없어도 생성기는 기본 매핑을 사용해 메서드를 노출할 수 있으며, proto 파일을 수정할 수 없는 경우에는 외부 gRPC API Configuration 파일에서 HTTP 규칙을 지정할 수 있습니다. 이 프로젝트에는 Swagger 2.0 정의를 위한 protoc-gen-openapiv2와 OpenAPI 3.1 출력을 위한 알파 버전 protoc-gen-openapiv3도 포함되어 있습니다.
생성된 코드는 Go용 grpc-gateway 런타임 패키지에 의존합니다. 쿼리 문자열 및 경로 매개변수, 필드 마스크로 매핑되는 PATCH 요청, 줄바꿈으로 구분된 JSON 형식의 스트리밍 응답을 지원하며, Grpc-Timeout 헤더로 gRPC 타임아웃을 설정할 수 있습니다.
핵심 기능
- 01HTTP+JSON 요청을 gRPC 호출로 변환하는 리버스 프록시를 생성합니다.
- 02google.api.http 어노테이션을 사용해 HTTP 경로, 쿼리 매개변수, 요청 본문을 gRPC 메시지에 매핑합니다.
- 03protoc-gen-openapiv2로 Swagger 2.0 정의를 생성합니다.
- 04알파 버전 OpenAPI 3.1 생성기인 protoc-gen-openapiv3을 제공합니다.
- 05PATCH 요청을 필드 마스크를 사용하는 gRPC 요청으로 변환하고, 응답을 줄바꿈으로 구분된 JSON 형식으로 스트리밍합니다.
활용 사례
- REST를 통해 JSON만 주고받는 클라이언트에 기존 gRPC 서비스를 노출합니다.
- 내부에 gRPC를 추가하면서 하위 호환성을 위해 RESTful API를 유지합니다.
- protobuf 정의에서 Swagger 또는 OpenAPI 문서를 바로 생성합니다.
- gRPC 지원이 미흡한 브라우저나 언어에서 gRPC 백엔드에 접근하도록 합니다.
빠른 시작
- 1
Go로 gateway 플러그인을 설치합니다
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway - 2
google.api.http 주석이 포함된 .proto 파일에 gRPC 서비스를 작성합니다
- 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은(는) 무엇인가요?
- Go 서비스의 RESTful JSON HTTP 요청을 gRPC 요청으로 변환하는 리버스 프록시 서버를 생성하는 protoc 플러그인입니다. gRPC-Gateway는 Protocol Buffers 컴파일러(protoc)용 플러그인으로, protobuf 서비스 정의를 읽어 리버스 프록시 서버를 생성합니다. 이 서버는 RESTful HTTP+JSON 요청을 받아 gRPC 서비스로 전달하므로, 하나의 구현으로 gRPC 클라이언트와 JSON 클라이언트를 모두 지원할 수 있습니다.
- grpc-gateway은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- grpc-gateway은(는) BSD-3-Clause 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- grpc-gateway은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. grpc-gateway의 마지막 커밋은 2026년 10월 22일입니다.
- grpc-gateway은(는) 어디에 사용할 수 있나요?
- REST를 통해 JSON만 주고받는 클라이언트에 기존 gRPC 서비스를 노출합니다. 내부에 gRPC를 추가하면서 하위 호환성을 위해 RESTful API를 유지합니다. protobuf 정의에서 Swagger 또는 OpenAPI 문서를 바로 생성합니다. gRPC 지원이 미흡한 브라우저나 언어에서 gRPC 백엔드에 접근하도록 합니다.
- grpc-gateway는 어떻게 설치하나요?
- Go로 gateway 플러그인을 설치합니다: go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway google.api.http 주석이 포함된 .proto 파일에 gRPC 서비스를 작성합니다 플러그인을 사용해 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를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
OpenAPI/Swagger 정의에서 API 클라이언트 SDK, 서버 스텁, HTML 문서를 생성하는 CLI 도구입니다.
통합 HTTP·gRPC 전송 계층, 미들웨어, Protobuf 기반 코드 생성을 제공하는 경량 Go 클라우드 네이티브 마이크로서비스 프레임워크입니다.
OpenAPI/Swagger 명세 파일을 바탕으로 브라우저에서 대화형 API 문서를 렌더링합니다.
인터랙티브 API 레퍼런스, 오프라인 우선 API 클라이언트, 다양한 웹 프레임워크용 통합 기능을 제공하는 오픈 소스 OpenAPI/Swagger 툴킷입니다.
JSON 입력과 서버 reflection 또는 proto 파일을 통한 스키마 탐색을 지원하는 gRPC 서버 호출용 CLI 도구입니다.