Chapter 35: gRPC-Gateway — REST and gRPC Together

What gRPC-Gateway Does

Auto-generates a REST reverse proxy from your .proto file. External clients use REST, internal services use gRPC.

Browser/Mobile ──REST──► gRPC-Gateway ──gRPC──► Your Service (auto-generated)

How to Define REST Mappings

import "google/api/annotations.proto";

service UserService {
  rpc GetUser(GetUserRequest) returns (User) {
    option (google.api.http) = {
      get: "/v1/users/{user_id}"
    };
  }
  rpc CreateUser(CreateUserRequest) returns (User) {
    option (google.api.http) = {
      post: "/v1/users"
      body: "*"
    };
  }
}

The gateway translates: GET /v1/users/123GetUser(GetUserRequest{user_id: "123"})