Sobes.tech
Junior

Ce este GraphQL?

sobes.tech AI

Răspuns de la AI

GraphQL este un limbaj de interogare pentru API-uri și un mediu de execuție pentru a executa aceste interogări asupra datelor tale. Oferă o alternativă la REST, permițând clientului să solicite doar datele de care are nevoie, într-o singură interogare.

Concepte cheie:

  1. Schema: Definește tipurile de date disponibile în API, relațiile lor și operațiunile disponibile (interogări, mutații, abonamente).
  2. Interogări (Queries): Sunt folosite pentru a citi date. Clientul indică ce câmpuri are nevoie.
  3. Mutări (Mutations): Sunt folosite pentru a modifica datele (creare, actualizare, ștergere).
  4. Abonamente (Subscriptions): Sunt folosite pentru a primi date în timp real printr-o conexiune persistentă (de exemplu, WebSocket).

Exemplu de interogare:

query GetUserData {
  user(id: "123") {
    name
    email
    posts {
      title
    }
  }
}

Răspunsul la această interogare poate arăta astfel:

{
  "data": {
    "user": {
      "name": "Ivan",
      "email": "ivan@example.com",
      "posts": [
        { "title": "Primul meu articol" },
        { "title": "Despre GraphQL" }
      ]
    }
  }
}

Avantaje față de REST:

  • Evitarea supra-cererii de date (Over-fetching): Clientul primește doar câmpurile solicitate.
  • Evitarea sub-cererii de date (Under-fetching) / multiple solicitări: Permite adesea obținerea tuturor informațiilor necesare într-o singură solicitare, spre deosebire de REST, unde pot fi necesare mai multe solicitări către endpoint-uri diferite.
  • Tipizare puternică: Schema oferă documentație clară și validare a interogărilor.
  • Performanță îmbunătățită: Mai puține date transmise.
  • Flexibilitate pe partea client: Clienții pot evolua independent de server, solicitând date după nevoie.

Dezavantaje:

  • Complexitatea configurării pe partea serverului.
  • Probleme cu caching-ul comparativ cu metodele standard de cache REST (de exemplu, la nivel HTTP).
  • Gestionarea erorilor este mai complexă comparativ cu REST (care utilizează coduri de stare HTTP standard).