Casual conversation
Open text, easy to read, easy to test, and useful when many different people need to understand the API.
SYSTEM DESIGN · APIS · ~9 MIN READ
REST and gRPC are different ways for systems to talk. REST is a casual conversation: flexible, clear, and easy to follow. gRPC is radio communication: shorter phrases, an agreed format, and a focus on moving information quickly and efficiently.
Open text, easy to read, easy to test, and useful when many different people need to understand the API.
An agreed format, compact messages, and efficient calls between systems that already know each other.
SECTION 01
When two systems need to exchange information, they need to agree on three things: how to ask, how to answer, and what shape the data should have.
REST and gRPC solve that same problem with different priorities. REST favors simplicity, human-readable messages, and compatibility. gRPC favors strong contracts, smaller messages, and efficient machine-to-machine communication.
Client asks: "what is user 42?"
Server answers: "here is the data"
REST: text/JSON response, easy to read
gRPC: Protobuf response, compact and typed
So the right question is not "which one is better?". The right question is: does this conversation need to be easy to open and understand, or very standardized and efficient at volume?
SECTION 02
REST usually means HTTP with JSON. You access a URL, choose a method like GET, POST, PUT, or DELETE, and receive a text response.
GET /users/42
Accept: application/json
{
"id": 42,
"name": "Ana",
"role": "admin"
}
REST's strength is familiarity. You can test it in the browser, Postman, curl, a frontend app, or almost any language. If the API is public, needs to be consumed by partners, or the product is still changing, REST is often the pragmatic choice.
REST is excellent when an API needs to be easy to discover, debug, and consume by different people and systems.
SECTION 03
gRPC uses HTTP/2 underneath and Protocol Buffers as its data format. Before calling the API, client and server agree on a contract in a .proto file.
service UserService {
rpc GetUser (UserRequest) returns (UserReply);
}
message UserRequest {
int32 id = 1;
}
message UserReply {
int32 id = 1;
string name = 2;
string role = 3;
}
That contract generates code for the client and the server. Instead of manually assembling JSON, you call a method almost like a local function: client.getUser({ id: 42 }).
The tradeoff is that it is less casual. It is not as natural to open in the browser and "see the response". In exchange, the system gets smaller messages, clearer types, and better communication for high-volume service-to-service calls.
SECTION 04
The difference is not just the name. REST usually transports JSON, which is readable text. gRPC transports Protobuf, which is binary and more compact. REST usually follows the traditional request-response mental model. gRPC takes better advantage of HTTP/2 features like multiplexing and streaming.
If you are building an API for a web app, REST tends to fit better. If you are connecting internal services that call each other constantly, gRPC can reduce transfer cost and behave better under concurrency.
SECTION 05
REST wins when operational simplicity matters more than raw efficiency. That happens in many real APIs.
Mobile app
↓
Public REST API
↓
Product backend
In other words: if many different people need to understand the conversation, REST is a very strong choice.
SECTION 06
gRPC wins when systems already live in the same environment and need to talk a lot, with little waste and a clear contract.
API Gateway
↓
gRPC
↓
User Service · Match Service · Payment Service
This is where the radio analogy fits: the teams have already agreed on the format, every message goes straight to the point, and the system holds up better as volume grows.
SECTION 07
REST is not "old" and gRPC is not "automatically better". They solve the same kind of problem with different priorities.
Need it to be easy to consume and debug?
→ REST
Need it to be compact, typed, and efficient between services?
→ gRPC
REST is great for exposing product. gRPC is strong for wiring services together internally. The difference is not about trendiness; it is about the type of conversation the system needs to sustain.
END · THANKS FOR READING
When the conversation needs to be clear to everyone, REST shines. When the conversation is between machines that already agreed on the protocol, gRPC can be more efficient.