Se podria definir como un lenguaje de consulta para API´s de datos, fue desarrolado por Fabebook buscando la optimizacion en las consultas a sus API, ya que una de las grandes diferencias entre GraphQL y REST API es que GraphQL permite realizar consultas selectivas, obteniendo solo los datos necesarios, en cambio con REST API obtienes todos los datos, ademas GraphQL permite consultas anidadas, reduce el numero de peticions HTTP y puede se intermediario de consulta de diferentes servicios de datos.
En estas 2 URL´s ejemplos podemos analizar los mismos datos consumidos en forma de REST API:
O en forma de GraphQL:
https://graphql.org/swapi-graphql/?
El el primer caso puedes observar que aunque tu consulta sea:
obtienes mucha informacion que no es necesaria para tu consulta (Vehicles, Planets… ), no es muy optimo.
En cambio usando GraphQL solo obtenemos la informacion requerida: