Útmutatók

REST vs GraphQL: mi a különbség, és melyiket használd?

A REST és a GraphQL az API tervezésének két módja: az egyeztetett módja annak, ahogy az app képernyői (vagy más programok) adatot kérnek a backendtől. A REST esetén minden típushoz külön URL tartozik, például /customers vagy /orders, és mindegyik rögzített adatszerkezetet ad vissza. A GraphQL esetén általában egy URL van, a hívó pedig lekérdezést küld, amely pontosan megadja, mely mezőket szeretné visszakapni. AI-val épített appok többségénél a REST az egyszerűbb és jobb alapértelmezés.

Miért számít ez AI-val való építésnél

Amikor egy AI-építőtől „backenddel rendelkező appot” kérsz, el kell döntenie, hogyan kommunikál a frontend a backenddel. Ezt nem neked kell minden alkalommal eldöntened, de a kifejezésekkel találkozni fogsz a kódban, a dokumentációban és külső szolgáltatások csatlakoztatásakor. Vannak szolgáltatások, amelyek csak egyféle stílust kínálnak: sok szolgáltatás REST API-t tesz elérhetővé, mások, például a Shopify és a GitHub, a GraphQL-t is kínálják, vagy azt részesítik előnyben. A különbség ismerete segít megérteni, amit látsz, és elkerülni a fölösleges bonyolultságot. Ha az „API” fogalma új neked, kezdd azzal, mi az API.

Mindennapi hasonlat

A REST egy étterem fix menüje. Minden étel (végpont) úgy érkezik, ahogy a konyha összeállította. Rendeled az „ügyfél” tételt, és megkapod az egész tányért: nevet, e-mailt, címet, regisztrációs dátumot, akkor is, ha csak a nevet akartad. Az ügyfél legutóbbi rendeléseit is kéred? Az egy második tétel.

A GraphQL egy pincértől rendelt à la carte étlap. Leírod pontosan, mit szeretnél: „az ügyfél neve, és az utolsó három rendelésének dátuma és összege”. Egy rendelés, egy tányér, csak azt, amit kértél. Ehhez azonban a konyhát fel kell készíteni arra, hogy bármilyen kombinációt kezeljen, amit a vendégek leírhatnak.

Ugyanaz a kérés, mindkét módon

Tegyük fel, hogy egy ügyféloldalnak egy ügyfél nevére és a legutóbbi három rendelésére van szüksége.

REST-tel ez jellemzően két kérés:

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

Az első válasz többet tartalmazhat, mint amennyire az oldalnak szüksége van:

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

GraphQL-lel egyetlen kérés van, általában POST egyetlen végpontra, például /graphql, amely lekérdezést visz:

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

A válasz pontosan tükrözi a lekérdezést:

{
  "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 }
      ]
    }
  }
}

Mindkettő JSON formátumot ad vissza. A különbség abban van, ki dönti el a szerkezetet: REST-nél a szerver, GraphQL-nél a hívó, a szerver sémája által megengedett keretek között.

Egymás melletti összehasonlítás

RESTGraphQL
URL-ekSok, erőforrásonként egyÁltalában egy (/graphql)
Ki alakítja a választA szerverA kliens, a lekérdezésen keresztül
Olvasás és írásHTTP-metódusok: GET, POST, PATCH, DELETELekérdezések (olvasás) és mutációk (írás)
Kapcsolódó adatok lekéréseGyakran több kérésGyakran egy kérés
Túllekérdezés (nem kellő mezők lekérése)GyakoriTervezésből adódóan elkerülhető
Séma / típusokOpcionális (pl. OpenAPI-leírás)Kötelező: beépített típusos séma
HTTP-gyorsítótárazás (böngészők, CDN-ek)Egyszerű GET kéréseknélNehezebb; általában klienskönyvtárak kezelik
HibákHTTP-státuszkódok (404, 401, 500)Gyakran egy errors lista a válasz törzsében, gyakran 200 státusszal együtt
Biztonság és költségkontrollVégpontonkénti szabályokSzükség van a lekérdezés mélységének és méretének korlátozására is
Tanulási görbe és eszközökAlacsony; bármely HTTP-eszközzel működikMagasabb; GraphQL-szervert és általában klienskönyvtárat igényel

Hol melyik illik

Válaszd a RESTet, ha:

  • tipikus appot építesz: foglalási rendszert, CRM-et, irányítópultot, webshopot.
  • egy frontend egy backenddel beszél, és mindkettőt te irányítod.
  • a lehető legegyszerűbben szeretnél hibakeresni, gyorsítótárazni és biztosítani.
  • más szolgáltatások hívják majd az appodat (a webhookok és a legtöbb integráció REST-stílusú végpontokat vár).

Fontold meg a GraphQL-t, ha:

  • több különböző kliens — weboldal, mobilapp, partneri integrációk — nagyon eltérő szeleteket igényel ugyanabból az adatból.
  • az adataid mélyen összekapcsoltak (termékek, variánsok, értékelések, eladók, készlet), és a képernyőknek sokféleképpen kell kombinálniuk őket.
  • olyan szolgáltatást használsz, amely a GraphQL-t kínálja fő API-jaként.

Hasznos szabály: ha nem vagy biztos benne, hogy szükséged van GraphQL-re, valószínűleg még nincs. Később könnyebb hozzáadni, mint eltávolítani.

Kulcsfogalmak

FogalomJelentés
VégpontEgy konkrét URL, amelyre az API válaszol.
ErőforrásEgy típusú dolog, amit az API kezel — foglalások, ügyfelek.
SémaA GraphQL API által visszaadható dolgok teljes, típusos leírása.
Lekérdezés / mutációGraphQL-ben: kérés adat olvasására / módosítására.
ResolverAz a szerverkód, amely egy GraphQL-mező adatát lekéri.
Túl- / alullekérdezésTöbb adat lekérése, mint amennyi kell / további kérések szükségessége, hogy elég adat legyen.
N+1 problémaAmikor egy lista és az elemek részletei elemenként külön adatbázis-lekérdezést indítanak — klasszikus teljesítménycsapda GraphQL-ben (és REST-ben is).
OpenAPISzabványos módja egy REST API végpontjainak és adatainak leírásának.

Gyakori tévhitek

  • „A GraphQL újabb, tehát jobb.” Konkrét problémákat old meg. Egy egyetlen frontendes appnál gyakran plusz munkát ad, kevés haszonnal.
  • „A GraphQL egy adatbázis.” Nem az. API-réteg; mögötte a szerver továbbra is az adatbázisodból olvas.
  • „A GraphQL mindig gyorsabb.” Kevesebb kérés segíthet lassú mobilhálózaton, de egy korlátlan lekérdezés hatalmas mennyiségű adatot tölthet be. A teljesítmény a backendtől függ.
  • „A REST szigorú szabványt jelent.” A gyakorlatban a „REST API” lazán azt jelenti: erőforrás-URL-ek, HTTP-metódusok és JSON. Sok jó API hajlítja a formális szabályokat.
  • „A 200-as státusz azt jelenti, hogy működött.” GraphQL-nél ellenőrizd az errors mezőt — egy kérés részben meghiúsulhat, és mégis 200-zal térhet vissza.

Mit kérdezz az AI-építődtől

  • „Használj egyszerű REST API-t JSON-nel, hacsak nincs egyértelmű ok az ellenkezőre — magyarázd el, ha szerinted GraphQL kell.”
  • „Sorold fel minden végpontot, mit ad vissza, és ki hívhatja.”
  • „Az ügyfél-oldalhoz csak azokat a mezőket add vissza, amelyeket az oldal használ.”
  • „Adj lapozást a listavégpontokhoz, hogy soha ne adjanak vissza egyszerre több ezer sort.”
  • „Ez a szolgáltatás csak GraphQL API-t kínál — szerverről hívd, a kulcsot tartsd titokban, és csak a szükséges mezőket kérd le.”
  • „Adj megfelelő HTTP-státuszkódokat és JSON-hibaüzeneteket.”

REST és GraphQL a Mythexben

A Mythex dokumentációja tartalmaz egy receptet a REST API backend építéséhez kezdő prompttal, a backend pedig futhat Node-ban, Pythonban (FastAPI), C#-ban vagy Javában a webappod mellett. A dokumentáció nem ír le GraphQL-sablont, ezért ha szeretnél egyet, kérd kifejezetten, és indokold meg. Harmadik féltől származó GraphQL API hívása ugyanúgy működik, mint bármely más külső szolgáltatásé — lásd: integrálj bármilyen API-t. Kapcsolódó olvasmány: frontend vs backend és hogyan építs REST API-t.

Kérdések

Mi a fő különbség a REST és a GraphQL között?

A REST API sok URL-t használ, típusonként egyet, és mindegyik rögzített adatszerkezetet ad vissza. A GraphQL API általában egyetlen URL-t használ, a kliens pedig lekérdezést küld, amely pontosan megadja, mely mezőkre van szüksége, így egy kérés is lekérheti a kapcsolódó adatokat a képernyő által igényelt formában.

A GraphQL jobb, mint a REST?

Általánosságban egyik sem jobb. A GraphQL akkor segít, ha sok különböző képernyőnek vagy appnak eltérő szeletekre van szüksége komplex, összekapcsolt adatokból. A REST egyszerűbben építhető, gyorsítótárazható és biztosítható, és a legtöbb kis- és közepes appnál jobb alapértelmezés.

A GraphQL gyorsabb, mint a REST?

Nem automatikusan. Csökkentheti a képernyő által indított kérések számát, de egyetlen összetett lekérdezés lassú és drága lehet a szerveren. A sebesség sokkal inkább attól függ, hogyan épül fel a backend és az adatbázis, mint az API stílusától.

Használhat egy app egyszerre REST-et és GraphQL-t?

Igen. Sok app GraphQL API-t tesz elérhetővé a saját frontendjének, miközben REST-et használ webhookokhoz és harmadik féltől származó integrációkhoz, vagy REST backendről hív más cégek GraphQL API-jait.

Mythex · Pricing · Építs bármit AI-val · Weboldal- és alkalmazássablonok · A Mythex összehasonlítva · AI-alapú alkalmazásépítési szószedet · Ingyenes eszközök AI-alapú alkalmazásépítéshez · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Հայերեն 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 简体中文 繁體中文(香港) 繁體中文(台灣)