REST APIs are built around resources that each own their own URI, in part to give clients a well-known or predictable way to interact. GraphQL takes a different approach. Note that the QL in GraphQL stands for query language. Data-fetching logic is moved into the query language itself, rather than being distributed among different API endpoints as in the case of REST. Clients no longer need to work through the process of the following:
- Determining what resource they need and where it lives on the list of URLs
- Looking up documentation to determine the input parameters and output data
- If applicable, reading the documentation on pagination or limiting of returned data
A formal specification currently found ...