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/123 → GetUser(GetUserRequest{user_id: "123"})