Skip to content
Devgo

REST vs gRPC

HTTP/JSON resources vs typed, binary RPC over HTTP/2. REST is universal, cacheable, and browser-friendly; gRPC is efficient, typed, and streaming-capable for internal service-to-service calls. Not mutually exclusive — use a gateway to expose gRPC as REST.

Contract

REST
Implicit; documented via OpenAPI.
gRPC
Strong, codegen from .proto.

Wire format

REST
JSON (human-readable, larger).
gRPC
Protobuf binary (compact, fast).

Transport

REST
/1.1 or HTTP/2; cacheable.
gRPC
/2 multiplexed; not browser-native.

Streaming

REST
Via SSE/ (separate).
gRPC
Built-in server/client/bidi streaming.

Best fit

REST
Public APIs, browser clients, cacheable resources.
gRPC
Internal service-to-service, typed contracts.
When REST wins
  • Public APIs and browser-facing endpoints.
  • You want caching and broad interoperability.
When gRPC wins
  • Internal service-to-service calls with a typed contract.
  • You need streaming or high throughput between services.

Verdict

Use inside your for efficiency and typing; expose (or gRPC-Web/Connect) at the edge for clients. They serve different layers, not the same job.