</>
⌕
Mid #rest#graphql#grpc#api

So sánh REST, GraphQL và gRPC: khi nào chọn cái nào?

⚡ Trả lời nhanh

REST: dựa trên resource và HTTP, dễ cache, phổ biến. GraphQL: client chọn field cần lấy qua một endpoint, tránh over/under-fetching nhưng cache và rate limit phức tạp hơn. gRPC: Protobuf nhị phân trên HTTP/2, nhanh, có streaming, hợp giao tiếp service-to-service.

RESTGraphQLgRPC
Giao thứcHTTP + JSONHTTP (thường POST) + JSONHTTP/2 + Protobuf
Hợp đồngOpenAPI (tùy chọn)Schema bắt buộc.proto bắt buộc
Fetch dữ liệuServer quyết định shapeClient chọn fieldRPC có kiểu chặt
Cache HTTPTự nhiên (GET)Khó, cần client cacheKhông dùng cache HTTP
Dùng từ browserDễDễCần gRPC-Web/proxy
query { user(id: 1) { name posts(first: 3) { title } } }
  • GraphQL giải quyết over-fetching và nhiều round trip, nhưng cần xử lý N+1 (DataLoader), giới hạn độ sâu/độ phức tạp query.
  • REST dễ dùng CDN và HTTP caching; GraphQL thường cache theo id entity ở client (Apollo, urql).
  • gRPC phù hợp microservices nội bộ, streaming hai chiều.
🃏 Ôn bằng flashcard