Vodiči

REST vs GraphQL: u čemu je razlika i koji koristiti?

REST i GraphQL su dva načina dizajniranja API-ja, odnosno dogovorenog načina na koji ekrani vaše aplikacije (ili drugi programi) traže podatke od vašeg backenda. Kod RESTa postoji zaseban URL za svaku vrstu stvari, poput /customers ili /orders, i svaki vraća unaprijed određen oblik podataka. Kod GraphQL-a obično postoji jedan URL, a pozivatelj šalje upit koji navodi točno koja polja želi dobiti natrag. Za većinu aplikacija izrađenih uz AI, REST je jednostavniji i bolji zadani izbor.

Zašto je ovo važno kad gradite uz AI

Kad od AI alata za izradu zatražite „aplikaciju s backendom“, mora odlučiti kako frontend i backend međusobno komuniciraju. Ne morate to odlučivati svaki put, ali ćete te pojmove vidjeti u kodu, dokumentaciji i pri povezivanju s vanjskim servisima. Neki servisi nude samo jedan stil: mnogi servisi izlažu REST API-je, dok drugi, primjerice Shopify i GitHub, nude ili preferiraju i GraphQL. Poznavanje razlike pomaže vam razumjeti što gledate i izbjeći dodavanje složenosti koja vam ne treba. Ako su vam „API“ novi pojam, počnite s što je API.

Svakodnevna usporedba

REST je jelovnik sa fiksnim menijem u restoranu. Svako jelo (endpoint) dolazi onako kako ga je kuhinja osmislila. Naručite jelo „customer“ i dobijete cijeli tanjur: ime, email, adresu, datum registracije, čak i ako ste htjeli samo ime. Želite i nedavne narudžbe tog kupca? To je drugo jelo.

GraphQL je naručivanje po narudžbi kod jednog konobara. Zapišete točno što želite: „ime kupca i datume i iznose njegove zadnje tri narudžbe“. Jedna narudžba, jedan tanjur, samo ono što ste tražili. No kuhinja mora biti postavljena da obradi bilo koju kombinaciju koju kupci zapišu.

Isti zahtjev na oba načina

Recimo da stranica kupca treba ime kupca i njegove tri najnovije narudžbe.

S RESTom to su obično dva zahtjeva:

GET /api/customers/42
GET /api/customers/42/orders?limit=3

Prvi odgovor može sadržavati više nego što stranica treba:

{ "id": 42, "name": "Lena Park", "email": "lena@example.com", "address": "…", "createdAt": "…" }

S GraphQL-om to je jedan zahtjev, obično POST na jedan endpoint poput /graphql, koji nosi upit:

query {
  customer(id: 42) {
    name
    orders(last: 3) {
      date
      total
    }
  }
}

I odgovor točno odražava upit:

{
  "data": {
    "customer": {
      "name": "Lena Park",
      "orders": [
        { "date": "2026-09-20", "total": 48.0 },
        { "date": "2026-09-02", "total": 19.5 },
        { "date": "2026-08-15", "total": 72.25 }
      ]
    }
  }
}

Oba vraćaju JSON. Razlika je u tome tko određuje oblik: kod RESTa to radi poslužitelj; kod GraphQL-a to radi pozivatelj, unutar onoga što shema poslužitelja dopušta.

Usporedba jedan pored drugog

RESTGraphQL
URL-oviMnogo — jedan po resursuObično jedan (/graphql)
Tko oblikuje odgovorPoslužiteljKlijent, putem upita
Čitanje i pisanjeHTTP metode: GET, POST, PATCH, DELETEUpiti (čitanje) i mutacije (pisanje)
Dohvaćanje povezanih podatakaČesto nekoliko zahtjevaČesto jedan zahtjev
Prekomjerno dohvaćanje (dobivanje polja koja ne trebate)ČestoIzbjegnuto po dizajnu
Shema / tipoviOpcionalno (npr. OpenAPI opis)Obavezno — tipizirana shema je ugrađena
HTTP predmemoriranje (preglednici, CDN-ovi)Jednostavno za GET zahtjeveTeže; obično rješavaju klijentske biblioteke
GreškeHTTP statusni kodovi (404, 401, 500)Često popis errors u tijelu odgovora, često uz status 200
Sigurnost i kontrola troškovaPravila po endpointuPotrebna su i ograničenja dubine i veličine upita
Krivulja učenja i alatiNiska; radi s bilo kojim HTTP alatomViša; potreban je GraphQL poslužitelj i obično klijentska biblioteka

Gdje koji odgovara

Odaberite REST kad:

  • Gradite tipičnu aplikaciju: sustav rezervacija, CRM, nadzornu ploču, trgovinu.
  • Jedan frontend komunicira s jednim backendom i vi kontrolirate oba.
  • Želite najjednostavniju stvar za otklanjanje grešaka, predmemoriranje i osiguravanje.
  • Druge usluge će pozivati vašu aplikaciju (webhookovi i većina integracija očekuju endpointe u stilu RESTa).

Razmislite o GraphQL-u kad:

  • Nekoliko različitih klijenata — web stranica, mobilna aplikacija, partnerske integracije — treba vrlo različite dijelove istih podataka.
  • Vaši podaci su duboko povezani (proizvodi, varijante, recenzije, prodavači, zalihe) i ekrani ih moraju kombinirati na mnogo načina.
  • Koristite uslugu koja GraphQL nudi kao svoj glavni API.

Korisno pravilo: ako niste sigurni trebate li GraphQL, vjerojatno ne trebate još. Lakše ga je dodati kasnije nego ukloniti.

Ključni pojmovi

PojamZnačenje
EndpointOdređeni URL na koji API odgovara.
ResursVrsta stvari kojom API upravlja — rezervacije, kupci.
ShemaPotpun, tipiziran opis onoga što GraphQL API može vratiti.
Upit / mutacijaU GraphQL-u: zahtjev za čitanje podataka / za njihovu promjenu.
ResolverKod na poslužitelju koji dohvaća podatke za jedno GraphQL polje.
Prekomjerno / nedovoljno dohvaćanjeDohvaćanje više podataka nego što trebate / potreba za dodatnim zahtjevima da dobijete dovoljno.
Problem N+1Kad dohvaćanje popisa plus detalja za svaku stavku pokrene jedan upit prema bazi po stavci — klasična zamka performansi u GraphQL-u (i REST-u).
OpenAPIStandardni način opisivanja endpointa i podataka REST API-ja.

Česte zablude

  • „GraphQL je noviji, pa je bolji.“ Rješava određene probleme. Za jednu aplikaciju s jednim frontendom često dodaje posao bez veće koristi.
  • „GraphQL je baza podataka.“ Nije. To je API sloj; iza njega poslužitelj i dalje čita iz vaše baze podataka.
  • „GraphQL je uvijek brži.“ Manje zahtjeva može pomoći na sporim mobilnim mrežama, ali neograničen upit može učitati ogromne količine podataka. Performanse ovise o backendu.
  • „REST znači strogi standard.“ U praksi „REST API“ labavo znači URL-ove resursa plus HTTP metode i JSON. Mnogi dobri API-ji savijaju formalna pravila.
  • „Status 200 znači da je uspjelo.“ Kod GraphQL-a provjerite polje errors: zahtjev može djelomično ne uspjeti i ipak vratiti 200.

Što pitati vaš AI alat za izradu

  • „Koristi jednostavan REST API s JSON-om osim ako postoji jasan razlog da ne. Objasni ako misliš da je GraphQL potreban.“
  • „Navedi svaki endpoint, što vraća i tko smije pozvati.“
  • „Za stranicu kupca vrati samo polja koja stranica koristi.“
  • „Dodaj paginaciju na endpointe s popisima da nikad ne vrate tisuće redaka odjednom.“
  • „Ovaj servis ima samo GraphQL API — pozovi ga s poslužitelja, drži ključ u tajnoj vrijednosti i traži samo polja koja trebamo.“
  • „Vraćaj ispravne HTTP statusne kodove i JSON poruke o greškama.“

REST i GraphQL u Mythexu

Mythexova dokumentacija uključuje recept za izradu REST API backenda s početnim upitom, a backend može raditi u Node.js-u, Pythonu (FastAPI), C#-u ili Javi uz vašu web aplikaciju. Dokumentacija ne opisuje GraphQL predložak, pa ako ga želite, zatražite ga izričito i recite zašto. Poziv na GraphQL API treće strane radi kao i svaka druga vanjska usluga; vidi integrirajte bilo koji API. Srodno štivo: frontend vs backend i kako izraditi REST API.

Pitanja

Koja je glavna razlika između REST-a i GraphQL-a?

REST API ima mnogo URL-ova, jedan po vrsti resursa, i svaki vraća fiksni oblik podataka. GraphQL API obično ima jedan URL, a klijent šalje upit koji točno opisuje koja polja želi, pa jedan zahtjev može dohvatiti povezane podatke u obliku koji treba određenom ekranu.

Je li GraphQL bolji od RESTA?

Općenito nijedan nije bolji. GraphQL pomaže kad mnogo različitih ekrana ili aplikacija treba različite dijelove složenih, povezanih podataka. REST je jednostavniji za izradu, predmemoriranje i osiguravanje te je bolji zadani izbor za većinu malih i srednjih aplikacija.

Je li GraphQL brži od RESTA?

Ne automatski. Može smanjiti broj zahtjeva koje ekran šalje, ali jedan složen upit može biti spor i skup na poslužitelju. Brzina ovisi mnogo više o tome kako su izgrađeni backend i baza podataka nego o stilu API-ja.

Može li aplikacija koristiti i REST i GraphQL?

Da. Mnoge aplikacije izlažu GraphQL API za vlastiti frontend, a REST koriste za webhookove i integracije s trećim stranama, ili REST backend poziva tuđe GraphQL API-je.

Mythex · Pricing · Izradite bilo što uz AI · Predlošci za web stranice i aplikacije · Mythex u usporedbi · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)