GraphQL és un llenguatge de consulta per a APIs i un entorn d'execució per a les consultes amb les dades existents. Va ser desenvolupat internament per Facebook el 2012 i es va fer públic el 2015. GraphQL proporciona una manera més eficient, potent i flexible de treballar amb APIs en comparació amb les arquitectures REST tradicionals.

Conceptes Clau de GraphQL

  1. Llenguatge de Consulta

GraphQL permet als clients sol·licitar exactament les dades que necessiten, ni més ni menys. Això es fa mitjançant un llenguatge de consulta específic que permet definir les estructures de dades desitjades.

  1. Esquema Fortament Tipat

GraphQL utilitza un esquema fortament tipat per definir les capacitats de l'API. L'esquema especifica els tipus d'objectes disponibles, així com les relacions entre ells.

  1. Consultes i Mutacions

  • Consultes: S'utilitzen per llegir dades.
  • Mutacions: S'utilitzen per escriure dades (crear, actualitzar, eliminar).

  1. Resolvers

Els resolvers són funcions que gestionen les sol·licituds de dades. Cada camp en una consulta GraphQL està associat amb un resolver que retorna el valor d'aquest camp.

  1. Tipus de Dades

GraphQL suporta diversos tipus de dades, incloent-hi tipus bàsics (com Int, Float, String, Boolean i ID) i tipus complexos (com objectes, llistes i unions).

Avantatges de GraphQL

  1. Flexibilitat

GraphQL permet als clients sol·licitar exactament les dades que necessiten, reduint la quantitat de dades transferides per la xarxa i millorant el rendiment.

  1. Evolució de l'API

Amb GraphQL, és més fàcil afegir nous camps i tipus a l'API sense afectar els clients existents. Això facilita l'evolució de l'API amb el temps.

  1. Documentació Automàtica

L'esquema de GraphQL serveix com a documentació automàtica de l'API. Les eines com GraphiQL i Playground permeten explorar l'API de manera interactiva.

  1. Tipus Forts

L'ús de tipus forts ajuda a detectar errors abans, durant el desenvolupament, i proporciona una millor experiència de desenvolupament amb eines com l'autocompletat i la validació de tipus.

Comparació amb REST

Característica GraphQL REST
Flexibilitat Sol·licita exactament les dades necessàries Respostes predefinides
Evolució de l'API Fàcil d'afegir nous camps i tipus Pot requerir noves versions de l'API
Documentació Automàtica a partir de l'esquema Manual
Tipus de Dades Fortament tipat Depèn de la implementació
Consultes Una sola sol·licitud per múltiples recursos Múltiples sol·licituds per múltiples recursos

Exemple Pràctic

A continuació, es mostra un exemple bàsic d'una consulta GraphQL i la seva resposta:

Consulta

{
  user(id: "1") {
    id
    name
    email
  }
}

Resposta

{
  "data": {
    "user": {
      "id": "1",
      "name": "John Doe",
      "email": "[email protected]"
    }
  }
}

En aquest exemple, la consulta sol·licita les dades d'un usuari amb un id específic, i la resposta retorna només els camps id, name i email de l'usuari.

Exercici Pràctic

Exercici 1: Crear una Consulta Bàsica

  1. Defineix una consulta que sol·liciti les dades d'un llibre (Book) amb els camps title, author i publishedYear.
  2. Escriu la resposta esperada per a aquesta consulta.

Solució

Consulta

{
  book(id: "1") {
    title
    author
    publishedYear
  }
}

Resposta

{
  "data": {
    "book": {
      "title": "GraphQL for Beginners",
      "author": "Jane Smith",
      "publishedYear": 2021
    }
  }
}

Conclusió

GraphQL és una poderosa alternativa a les APIs REST tradicionals, oferint una major flexibilitat, eficiència i una millor experiència de desenvolupament. En els següents mòduls, explorarem més a fons com configurar un servidor GraphQL, els conceptes bàsics de l'esquema, i com realitzar consultes i mutacions.

© Copyright 2024. Tots els drets reservats