Architecture Comparison
REST Architecture
Multiple endpoints:
GET /rest/V1/products
GET /rest/V1/products/123
GET /rest/V1/categories
GET /rest/V1/customers
POST /rest/V1/carts
GraphQL Architecture
Single endpoint:
POST /graphql
Query determines response:
query {
products { items { name, sku } }
categories { items { name } }
}
Key Differences
| Aspect | REST | GraphQL |
|---|---|---|
| Endpoints | Multiple | Single |
| Data Fetching | Fixed per endpoint | Flexible per query |
| Over-fetching | Common | Prevented |
| Under-fetching | Common | Prevented |
| Caching | HTTP caching | Application caching |
| Versioning | URL versioning | Schema evolution |
| Real-time | Polling/WebSockets | Subscriptions |
Data Fetching
# REST: Get product with category (2 requests)
GET /rest/V1/products/123
GET /rest/V1/categories/5
# GraphQL: Get product with category (1 request)
query {
product(sku: "123") {
name
category {
name
}
}
}
Advantages and Disadvantages
REST Advantages
- Simple to implement
- HTTP caching built-in
- Wide tooling support
- Easy to understand
- Standard HTTP methods
- Mature ecosystem
REST Disadvantages
- Over-fetching common
- Under-fetching requires multiple requests
- Multiple endpoints to maintain
- Versioning complexity
- Fixed data structure
GraphQL Advantages
- Precise data fetching
- Single request for related data
- No over/under-fetching
- Strongly typed schema
- Introspection for documentation
- Flexible queries
GraphQL Disadvantages
- Complex caching
- Learning curve
- Query complexity issues
- N+1 problem potential
- Less tooling than REST
- No HTTP caching
Comparison Matrix
| Factor | REST | GraphQL |
|---|---|---|
| Learning curve | Low | Medium |
| Implementation | Simple | Complex |
| Performance | Good | Excellent |
| Flexibility | Low | High |
| Caching | Easy | Complex |
| Tooling | Excellent | Good |
| Documentation | Good | Excellent |
When to Use REST
REST Scenarios
Simple CRUD Operations
GET /products POST /products PUT /products/123 DELETE /products/123File Uploads
POST /rest/V1/products/123/media Content-Type: multipart/form-dataWebhooks
POST https://webhook-url.com Content-Type: application/json { "event": "order.created", "data": {...} }Third-Party Integration
- Many services support REST
- Standard authentication
- Easy to integrate
Caching Required
- HTTP caching built-in
- CDN support
- Browser caching
REST Best Practices
# Use proper HTTP methods
GET - Read
POST - Create
PUT - Update
DELETE - Remove
# Use proper status codes
200 - Success
201 - Created
400 - Bad Request
404 - Not Found
# Use pagination
GET /products?page=1&limit=20
When to Use GraphQL
GraphQL Scenarios
Complex Data Requirements
query { product(sku: "123") { name price { value } category { name } reviews { items { rating, text } } relatedProducts { name, price { value } } } }Mobile Applications
- Reduce bandwidth
- Precise data fetching
- Single request
Multiple Frontends
# Web: Full product data query { product(sku: "123") { name, price, description, images } } # Mobile: Minimal data query { product(sku: "123") { name, price } }Real-time Updates
subscription { orderStatusChanged(orderId: 123) { status updatedAt } }Microservices
- Single endpoint
- Aggregate multiple services
- Flexible queries
GraphQL Best Practices
# Use variables for parameters
query GetProduct($sku: String!) {
product(sku: $sku) {
name
price { value }
}
}
# Use fragments for reusable fields
fragment ProductFields on Product {
name
sku
price { value }
}
# Limit query depth
query {
product(sku: "123") {
name
category { name }
}
}
Quiz
1. What is the main advantage of GraphQL?
2. When should you use REST?
3. What is a GraphQL disadvantage?
Flashcards
Question
What is the main REST advantage?
Click to reveal answer
Answer
Simple implementation and HTTP caching
Question
What is the main GraphQL advantage?
Click to reveal answer
Answer
Precise data fetching, no over/under-fetching
Question
When to use REST?
Click to reveal answer
Answer
Simple CRUD, file uploads, third-party integration
Question
When to use GraphQL?
Click to reveal answer
Answer
Complex data needs, mobile apps, multiple frontends
Question
What is GraphQL's caching challenge?
Click to reveal answer
Answer
No built-in HTTP caching, requires application-level caching
Revision Notes
Key Takeaways
- 1. REST: Multiple endpoints, simple caching, easy to learn
- 2. GraphQL: Single endpoint, flexible queries, complex caching
- 3. REST for simple CRUD and file operations
- 4. GraphQL for complex data and mobile apps
- 5. Choose based on project requirements
Interview Tips
- • Explain the differences between REST and GraphQL
- • Know when to use each approach
- • Discuss trade-offs and best practices
- • Be ready to recommend API strategy
Cheat Sheet
REST:
- Multiple endpoints
- HTTP caching
- Simple implementation
- Good for CRUD
GraphQL:
- Single endpoint
- Flexible queries
- Complex caching
- Good for complex data
Decision:
Simple → REST
Complex → GraphQL
Mobile → GraphQL
Third-party → REST