Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!

We spend hours scrolling social media and waste money on things we forget, but won’t spend 30 minutes a day earning certifications that can change our lives.
Master in DevOps, SRE, DevSecOps & MLOps by DevOpsSchool!

Learn from Guru Rajesh Kumar and double your salary in just one year.


Get Started Now!

gRPC REST GraphQL & WebSocket – A example

That’s a great question. The reason it’s hard to visually spot the difference in a gRPC request is because it’s a binary protocol over HTTP/2, unlike human-readable formats like REST (JSON) or GraphQL (JSON). But let’s break it down for you in a side-by-side comparison, using the same logical operation — a simple SayHello(name) API — to highlight the key differences:


🧪 1. gRPC Request (Over HTTP/2 + Protobuf)

🔹 Summary:

  • Uses HTTP/2 as the transport
  • Uses binary Protobuf messages
  • Includes custom HTTP/2 headers

🔸 gRPC HTTP/2 Headers:

:method: POST
:scheme: https
:authority: myservice.com
:path: /greeter.Greeter/SayHello
content-type: application/grpc
te: trailers
grpc-timeout: 5S
Code language: JavaScript (javascript)

🔸 Binary Protobuf Payload (Encoded):

00000000120a0452616a657368120a48656c6c6f2c2052616a65736821

⚠️ Note: This payload is not human-readable. It’s a binary encoding of:

message HelloRequest {
  string name = "Rajesh"
}
Code language: JavaScript (javascript)

🧪 2. REST Request (Over HTTP/1.1 + JSON)

🔹 Summary:

  • Uses HTTP/1.1
  • JSON payload
  • Simple headers

🔸 HTTP/1.1 Headers:

POST /api/hello HTTP/1.1
Host: myservice.com
Content-Type: application/json
Code language: HTTP (http)

🔸 JSON Body:

{
  "name": "Rajesh"
}
Code language: JSON / JSON with Comments (json)

✅ Human-readable and easily debuggable.


🧪 3. GraphQL Request (Over HTTP/1.1 + JSON)

🔹 Summary:

  • Sends a query/mutation in the body
  • Still over HTTP/1.1

🔸 Headers:

POST /graphql HTTP/1.1
Content-Type: application/json
Code language: HTTP (http)

🔸 JSON Body:

{
  "query": "query SayHello($name: String!) { sayHello(name: $name) }",
  "variables": { "name": "Rajesh" }
}
Code language: JSON / JSON with Comments (json)

🧪 4. WebSocket Message (Example Payload)

🔹 Summary:

  • Bi-directional persistent connection
  • Custom or JSON-encoded data

🔸 JSON Message:

{
  "action": "sayHello",
  "data": {
    "name": "Rajesh"
  }
}
Code language: JSON / JSON with Comments (json)

🧠 Key Differences

FeaturegRPCRESTGraphQLWebSocket
TransportHTTP/2HTTP/1.1HTTP/1.1WebSocket (TCP)
EncodingProtobuf (binary)JSONJSONJSON / Custom
Readability❌ Not human-readable✅ Yes✅ Yes✅ Yes (usually JSON)
Schema Enforcement✅ Yes (Protobuf contracts)❌ No✅ Yes (GraphQL schema)❌ Custom per app
Streaming✅ Native support❌ No🚫 Only with extra libs✅ Native support

🔍 How to Inspect gRPC Requests

Since gRPC requests are binary:

  • Use grpcurl to simulate or inspect requests
  • Use BloomRPC or Postman (gRPC beta) to explore APIs
  • Add interceptors to log decoded messages in dev

Example with grpcurl:

grpcurl -plaintext localhost:50051 list
grpcurl -d '{"name": "Rajesh"}' -plaintext localhost:50051 greeter.Greeter/SayHello
Code language: PHP (php)

Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

Certification Courses

DevOpsSchool has introduced a series of professional certification courses designed to enhance your skills and expertise in cutting-edge technologies and methodologies. Whether you are aiming to excel in development, security, or operations, these certifications provide a comprehensive learning experience. Explore the following programs:

DevOps Certification, SRE Certification, and DevSecOps Certification by DevOpsSchool

Explore our DevOps Certification, SRE Certification, and DevSecOps Certification programs at DevOpsSchool. Gain the expertise needed to excel in your career with hands-on training and globally recognized certifications.

0
Would love your thoughts, please comment.x
()
x