Repolode
grpc-ecosystem

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

    Go로 gateway 플러그인을 설치합니다

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

    google.api.http 주석이 포함된 .proto 파일에 gRPC 서비스를 작성합니다

  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은(는) 무엇인가요?
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 통계는 매일 갱신됩니다.

관련 프로젝트