GraphQL lets clients request exactly the data they need:
query {
user(id: 123) {
name
posts { title }
}
}
Advantages:
- No over-fetching (get only requested fields)
- No under-fetching (get related data in one request)
- Strongly typed schema
- Single endpoint
Disadvantages:
- Caching is harder (POST requests, dynamic queries)
- N+1 query problem without DataLoader
- Complexity for simple use cases
Use GraphQL when clients have varied data needs. REST is simpler for straightforward CRUD.