Què és GraphQL?
GraphQL és un llenguatge de consulta per a APIs i un entorn per executar aquestes consultes. El va crear Facebook (avui Meta) el 2012 i el va publicar com a codi obert el 2015. La seva idea principal és senzilla: el client descriu exactament quines dades necessita i el servidor retorna just això, ni més ni menys, normalment en una sola petició.
Com funciona GraphQL
- Esquema (schema): el servidor defineix amb tipus totes les dades disponibles i com es relacionen. És el contracte entre frontend i backend.
- Queries: consultes per llegir dades. El client indica els camps que vol i la resposta té exactament aquesta forma.
- Mutations: operacions per crear, modificar o esborrar dades.
- Subscriptions: permeten rebre actualitzacions en temps real.
- Un únic endpoint: totes les operacions s'envien a la mateixa URL, en lloc de tenir una URL per recurs com a REST.
GraphQL vs REST
- Dades a mida: a REST cada endpoint retorna una estructura fixa, cosa que sovint obliga a rebre dades de més (over-fetching) o a fer diverses peticions per completar una pantalla (under-fetching). A GraphQL demanes exactament el que necessites.
- Una petició en lloc de diverses: pots obtenir dades relacionades (per exemple, un article, el seu autor i les seves categories) en una sola consulta.
- Tipatge i autodocumentació: l'esquema descriu l'API i permet eines d'autocompletat i validació; no depèn de documentació externa.
- Evolució sense versions: es poden afegir camps sense trencar els clients existents, en lloc de crear /v2, /v3...
- Quan REST continua sent millor: per a APIs senzilles, molt orientades a recursos, o on la memòria cau HTTP és clau, REST pot ser més simple d'implementar i mantenir.
Avantatges de GraphQL
- Menys transferència de dades i menys peticions, cosa especialment útil en mòbils.
- Desenvolupament frontend més ràpid: l'equip de frontend no depèn que es creïn nous endpoints per a cada pantalla.
- Un esquema tipat que actua com a documentació viva de l'API.
- Ampli ecosistema d'eines i llibreries per a gairebé qualsevol llenguatge.
GraphQL amb Strapi, Drupal i Next.js
GraphQL encaixa especialment bé en arquitectures headless: Strapi ofereix una API GraphQL mitjançant el seu plugin oficial, Drupal disposa de mòduls per exposar el seu contingut en GraphQL, i des d'un frontend en Next.js es poden consumir aquestes APIs tant al servidor com al client.
Com utilitzem GraphQL a Digrup
A Cuidem Barcelona, el cercador de residus de l'Ajuntament de Barcelona, tota la informació de residus s'obtenia d'una API desenvolupada en GraphQL, que vam integrar en un mòdul de Drupal a mida juntament amb l'API d'adreces de l'Ajuntament. Si el teu projecte necessita integrar o dissenyar APIs, parlem.
Preguntes freqüents
GraphQL és una base de dades?
No. GraphQL és un llenguatge de consulta per a APIs. Per sota hi pot haver qualsevol base de dades o servei.
GraphQL substitueix REST?
No necessàriament. Són dues maneres de dissenyar APIs i poden conviure. GraphQL aporta més avantatges quan hi ha moltes relacions entre dades o diversos clients amb necessitats diferents.
Qui va crear GraphQL?
Facebook (Meta) el va desenvolupar el 2012 i el va alliberar el 2015. Avui el manté la GraphQL Foundation.
Què és una query a GraphQL?
És una consulta de lectura en què el client indica els camps exactes que vol rebre. La resposta arriba en JSON amb la mateixa estructura que la consulta.