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.
| REST | GraphQL | gRPC | |
|---|---|---|---|
| Giao thức | HTTP + JSON | HTTP (thường POST) + JSON | HTTP/2 + Protobuf |
| Hợp đồng | OpenAPI (tùy chọn) | Schema bắt buộc | .proto bắt buộc |
| Fetch dữ liệu | Server quyết định shape | Client chọn field | RPC có kiểu chặt |
| Cache HTTP | Tự nhiên (GET) | Khó, cần client cache | Không dùng cache HTTP |
| Dùng từ browser | Dễ | 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.