REST exposes multiple resource endpoints and returns fixed response shapes, which can lead to over/under‑fetching. GraphQL exposes a single endpoint with a query language so the client asks for exactly the fields it needs, enabling nested fetches but adding schema/resolver complexity and different caching patterns.