Sobes.tech
Junior

Šta je GraphQL?

sobes.tech АИ

Одговор од АИ

GraphQL je jezik upita za API i okruženje za izvršavanje tih upita. Omogućava klijentu da zahteva tačno one podatke koji su mu potrebni, definišući strukturu odgovora. Za razliku od tradicionalnih REST API-ja, gde se zahtevaju krajnje tačke, GraphQL šalje upit na jednu krajnju tačku, specificirajući potrebna polja.

Glavni koncepti GraphQL-a:

  • Šema (Schema): Definiše dostupne tipove podataka, operacije (upiti, mutacije, pretplate) i odnose između tipova. Piše se u Schema Definition Language (SDL).
  • Tipovi (Types): Definišu strukturu podataka. Mogu biti skalarni (String, Int, Float, Boolean, ID), prilagođeni ili tipovi-kontejneri (Liste, Non-Null).
  • Upiti (Queries): Koriste se za dobijanje podataka sa servera. Klijent navodi koja polja su potrebna, a server vraća podatke samo za ta polja.
  • Mutacije (Mutations): Koriste se za menjanje podataka na serveru (kreiranje, ažuriranje, brisanje). Slično su upitima, ali jasno ukazuju na promenu stanja.
  • Pretplate (Subscriptions): Omogućavaju klijentu da prima ažuriranja u realnom vremenu kako se podaci na serveru menjaju.

Prednosti GraphQL-a:

  • Efikasnost: Klijent zahteva samo potrebne podatke, smanjujući količinu prenesenih informacija i sprečavajući preuzimanje viška (overfetching).
  • Fleksibilnost: Klijent sam definiše strukturu odgovora, što olakšava razvoj i evoluciju API-ja.
  • Poboljšana performansa: Efikasno dobijanje podataka može ubrzati učitavanje stranica.
  • Stroga tipizacija: Šema obezbeđuje jasno definovan ugovor između klijenta i servera, što olakšava validaciju i otkrivanje grešaka.

Primer upita:

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

Primer mutacije:

mutation CreatePost {
  createPost(input: { title: "Novi Post", content: "..." }) {
    id
    title
  }
}