GraphQL oktatóanyag kezdőknek: Mi az, szolgáltatások és példa
Mi az a GraphQL?
GraphQL egy alkalmazásszintű szerveroldali technológia, amelyet a Facebook fejlesztett ki meglévő adatokkal kapcsolatos lekérdezések végrehajtására. A GraphQL képes optimalizálni a RESTful API-hívásokat. Deklaratív módot ad az adatok lekérésére és frissítésére. A GraphQL segít az adatok betöltésében a szerverről a kliensre. Lehetővé teszi a programozók számára, hogy kiválasszák, milyen típusú kéréseket szeretnének benyújtani.
Miért használja a GraphQL-t?
A GraphQL használatának okai a következők:
- Ember által olvasható lekérdezést biztosít.
- A GraphQL-ben nagyon könnyű sok adatbázist kezelni.
- Alkalmas mikroszolgáltatásokhoz és összetett rendszerekhez.
- Egyetlen API-hívással lekérheti az adatokat.
- Segít a lekérdezések kötegelésénél és gyorsítótárazásánál.
- Nem szembesülsz, nem vagy túl vagy alávetve a problémákkal.
- A kéréseket az Ön igényeihez igazítjuk.
- Segít megtalálni a sémát a megfelelő formátumban.
- A GraphQL automatikusan szinkronban tartja a dokumentációt az API-módosításokkal.
- Az API evolúciója verziószámítás nélkül is lehetséges.
- A GraphQL-mezőket több lekérdezésben használják, amelyek megoszthatók magasabb komponensszinten újrafelhasználás céljából.
- Kiválaszthatja, hogy mely funkciókat jelenítse meg, és hogyan működjenek.
- Gyors alkalmazás prototípus készítésére használható.
A GraphQL alkalmazásai
Íme a GraphQL fontos alkalmazásai:
- Relay és egyéb kliens keretrendszereket biztosít
- A GraphQL segít a mobilalkalmazás teljesítményének javításában.
- Csökkentheti a túlzott letöltési problémát, és csökkentheti a szerveroldali felhőszolgáltatást, és csökkentheti az ügyféloldali hálózathasználatot.
- Akkor használható, ha az ügyfélalkalmazásnak meg kell adnia, hogy mely mezőkre van szükség hosszú lekérdezési formátumban.
- A GraphQL teljes mértékben kihasználható, ha funkcionalitást kell hozzáadnia a régi vagy meglévő API-jához.
- Akkor használatos, ha összetett API-t kell egyszerűsítenie.
- Keverje össze és keverje össze a homlokzati mintát, amelyet gyakran használnak az objektum-orientált programozásban.
- Amikor egynél több helyről kell adatokat összesítenie egyetlen kényelmes API-ba.
- A GraphQL-t absztrakcióként használhatja egy meglévő API-n a válaszstruktúra meghatározásához a felhasználói igények alapján.
Mit kell megtanulnod a GraphQl megtanulása előtt?
Ez a GraphQL oktatóanyag a expressz és a NodeJs. Ezért nagyon könnyen megtanulhatja a GraphQL-t a NodeJS alapvető ismereteivel.
GraphQL kulcskomponensek
Most ebben a GraphQL oktatóanyagban tanuljuk meg a GraphQL legfontosabb összetevőit:
Amint a fenti ábrán látható, a GraphQL három kulcsfontosságú összetevője van: 1) Query, 2) Resolver és 3) Schema.
Kérdés
A lekérdezés egy API-kérelem, amelyet az ügyfélgép-alkalmazás küld. Támogatja a bővítéseket és a tömbökre mutat. A lekérdezés értékek olvasására vagy lekérésére szolgál.
A lekérdezés részei:
Az alábbiakban a Query fontos részei találhatók
- Mező:
Egy mező egyszerűen azt jelzi, hogy bizonyos információkat kérünk a szervertől. Az alábbiakban egy GraphQL-példa látható egy mezőre a graphQL lekérdezésben.
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
A fenti GraphQL példában a team nevű mezőt és annak almezőit, például az azonosítót és a nevet kérjük a szervertől. A GraphQL szerver az általunk kért adatokat adja vissza.
- érvek
In REST, csak egyetlen argumentumkészletet tudunk átadni URL-szegmensként és lekérdezési paraméterként. Egy adott profil megszerzéséhez egy tipikus REST-hívás a következőképpen fog kinézni:
GET /api'team?id=2 Content-Type: application JSON { "id": 2, "name": "Justice League." }
rezolverhez
A feloldók útmutatást adnak a GraphQL-művelet adatokká konvertálásához. Feloldófüggvények meghatározásával oldják fel az adatok lekérdezését.
Megjeleníti a szervernek a folyamatot, valamint az adatok lekérésének helyét egy adott mező szerint. A feloldó az adatbázissémát és az API-sémát is elválasztja egymástól. Az elkülönített információ segít az adatbázisból nyert tartalom módosításában.
Séma
A GraphQL séma a GraphQL megvalósításának központja. Leírja a hozzá csatlakozó ügyfelek számára elérhető funkciókat.
A GraphQL jellemzői
Íme a GraphQL fontos funkciói:
- Deklaratív lekérdezési nyelvet biztosít, ami nem feltétlenül szükséges.
- Hierarchikus és termékközpontú.
- A GraphQL erősen begépelt. Ez azt jelenti, hogy a lekérdezéseket egy adott rendszer kontextusában hajtják végre.
- A GraphQL lekérdezései a kliensben vannak kódolva, nem a szerverben.
- Az OSI modell alkalmazási rétegének minden funkciójával rendelkezik.
GraphQL kliensek
A GraphQL kliens egy olyan kód, amely POST kéréseket küld a megfelelő GraphQL kiszolgálóhoz. A GraphQL API-t közvetlenül is lekérdezheti, de a jó megközelítés egy dedikált klienskönyvtár kihasználása a Relay használatával.
Ezt JavaA szkriptkönyvtárat a Facebook fejlesztette ki, hogy React alkalmazásokat készítsen GraphQL-lel. A GraphQL kliensek lehetnek CMS-ek, például Drupal, egyoldalas alkalmazás, mobilalkalmazás stb.
GraphQL szerverek
A GraphQL szerverek a GraphQL specifikációjának szerveroldali megvalósítása. Az adatokat GraphQL API-ként ábrázolja, amelyet az ügyfélprogram le tud kérdezni adatbázis.
GraphQL átjárók
Az átjáró egy mikroszolgáltatási minta, ahol külön szolgáltatást hozhat létre, hogy megbirkózzon más háttérszolgáltatásokkal. Működőképes dokumentációt kínál, és kényelmes módot ad arra, hogy egyetlen kéréssel több forrásból is gyűjtsön adatokat.
Mi a változó a GraphQL-ben?
A Változó a GraphQL-ben A dinamikus értékek elválasztására szolgál az ügyféllekérdezéstől, és a lekérdezést egyedi szótárként adják át. A GraphQL változója az ügyfél által egyedi argumentumokkal írt lekérdezés vagy mutációk újrafelhasználására is használható. A graphQL-ben nem adhat át dinamikus argumentumokat közvetlenül a lekérdezési karakterláncban. Ennek az az oka, hogy az ügyféloldali kódnak dinamikusan kell manipulálnia a lekérdezési karakterláncot a program futtatásakor.
A GraphQL-nek van egy jó módja a dinamikus értékek faktorizálására a lekérdezésből. Külön szótárként adja át őket. Ezeket az értékeket változóknak nevezzük. Amikor változókkal dolgozunk, a következő három dolgot kell tennünk:
- Cserélje le a statikus értéket a lekérdezésben egy változónévre.
- Deklarálja a változó nevét a GraphQL lekérdezés által elfogadott változók közé.
- Adja át az értéket a változók szállítás-specifikus szótárában.
Így néz ki együtt:
query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name friends { name } } } { "episode": "JEDI" } { "data": { "hero": { "name": "R2-D2", "friends": [ { "name": "Luke Skywalker" }, { "name": "Han Solo" }, { "name": "Leia Organa" } ] } } }
Amint a fenti GraphQL-példában is látható, egyszerűen egy másik változót adtunk át, amely nem szükséges egy új lekérdezés létrehozásához.
Mi az a mutáció?
A mutáció az adatkészlet megváltoztatásának módja a GraphQL-ben. Módosítja az adatokat az adattárban, és értéket ad vissza. A mutációk segítenek az adatok beszúrásában, frissítésében vagy törlésében. A mutációkat általában sémarészként definiálják.
A GraphQL mutációk tervezése során figyelembe veendő szempontok
Íme a GraphQL tervezésének fontos pontjai:
- Elnevezés: Először is meg kell nevezned a mutációid igét. Ezután a főnév, vagy adott esetben a „tárgy”. Használja a camelCase-t a mutációk elnevezéséhez.
- Részletesség: Mutáció-specifikussá kell tenni, amennyire csak lehetséges. A mutációknak a felhasználó szemantikai műveleteit kell képviselniük.
- Beviteli objektum: Használjon egyetlen, egyedi, kötelező bemeneti objektumtípust argumentumként a mutáció végrehajtásához az ügyfélen.
- Egyedi rakománytípus: Minden mutációhoz egyedi rakománytípust kell használni. A mutáció kimenetét mezőként is hozzáadhatja az adott rakománytípushoz.
- Fészkelődés: Használja a beágyazást a mutációjához, ahol annak van értelme. Lehetővé teszi a GraphQL API teljes körű kihasználását.
A GraphQL és a REST közötti különbség
Az alábbi táblázat fontos különbséget mutat be GraphQL és REST.
GraphQL | REST |
---|---|
Kliens-vezérelt architektúrát követ. | Szerver-vezérelt architektúrát követ. |
A GraphQL rendszerezhető séma szerint. | A REST végpontok szerint szervezhető. |
A GraphQL egy növekvő közösség. | A REST egy nagyon nagy közösség. |
A GraphQL fejlesztési sebessége gyors. | A REST fejlesztési sebessége lassú. |
A GraphQL tanulási görbéje nehéz. | A REST tanulási görbéje mérsékelt. |
Az identitás elkülönül attól, ahogyan lekéri. | A REST-ben meghívott végpont egy adott objektum azonossága. |
A GraphQL-ben a szerver határozza meg az elérhető erőforrásokat. | Az erőforrás alakját és méretét a szerver határozza meg a REST-ben. |
A GraphQL nagy konzisztenciát biztosít minden platformon. | Nehéz elérni a konzisztenciát minden platformon. |
A GraphQL hátrányai
Itt vannak a GraphQL hátrányai:
- Fiatal ökoszisztéma
- Erőforrások hiánya a háttérben.
- Hiányzó tervezési minta egy összetett alkalmazáshoz.
- Teljesítményproblémák összetett lekérdezések esetén.
- Overkill kis alkalmazásokhoz
- A GraphQL nem függ a HTTP-gyorsítótárazási módszerektől, amelyek lehetővé teszik a kéréstartalom tárolását.
- A GraphQL nem érti a fájlokat. Ezért a fájl feltöltési funkció nem szerepel benne.
- A GraphQL segítségével készüljön fel számos fejlesztés előtti oktatásra, például a sémadefiníciós nyelv megtanulására.
A GraphQL által használt nyílt forráskódú alkalmazások és eszközök
A GraphQL által használt fontos nyílt forráskódú alkalmazások és eszközök a következők:
- Gatsby: A Gastby egy GraphQL által üzemeltetett alkalmazás, amely több GraphQL API-forrásból származó adatokat is használhat. Statikus és kliens alapú React alkalmazás fejlesztésére használhatja.
- GraphiQL: Ez egy azonosító, amely integrálódik a böngészőbe, és kölcsönhatásba lép a GraphQL API-jával is. A GraphiQL néhány funkciója a mutációk, az adatlekérdezés és a lekérdezések automatikus kiegészítése.
- GraphQL játszótér: Ez egy hatékony IDE, amely beépített szerkesztővel rendelkezik a mutációk kezelésére, az érvényesítésre, a GraphQl-lekérdezésekre, az előfizetésekre stb. A fejlesztő ezt az IDE-t használhatja a séma szerkezetének megjelenítésére.
- Prizma: A Prisma egy adatbázis-absztrakciós réteg, amely az adatbázisokat GraphQL API-kká alakítja CRUD (Create, Read, Update és Delete) műveletekkel.
- Bit: Ez egy nyílt forráskódú eszköz és platform, amely az újrafelhasználható kódot komponensekké alakítja. A fejlesztők felhasználhatják őket különféle projektek megosztására és fejlesztésére.
Összegzésként
- A GraphQL egy alkalmazásszintű szerveroldali technológia, amelyet a Facebook fejlesztett ki meglévő adatokkal kapcsolatos lekérdezések végrehajtására.
- A GraphQL segítségével egyetlen API-hívással is lekérheti az adatokat.
- A GraphQL segít a mobilalkalmazás teljesítményének javításában.
- A GraphQL fontos lekérdezési összetevői a következők: 1) Lekérdezés, 2) Feloldó, 3) Séma.
- A GraphQL erősen begépelt. Ez azt jelenti, hogy a lekérdezéseket egy adott rendszer kontextusában hajtják végre.
- A GraphQL kliens egy olyan kód, amely POST kéréseket küld a megfelelő GraphQL kiszolgálóhoz.
- A GraphQL szerverek a GraphQL specifikációjának szerveroldali megvalósítása.
- Az átjáró egy mikroszolgáltatási minta, ahol külön szolgáltatást hozhat létre, hogy megbirkózzon más háttérszolgáltatásokkal.
- A GraphQL-nek van egy jó módja a dinamikus értékek faktorizálására a lekérdezésből.
- A mutáció az adatkészlet megváltoztatásának módja a GraphQL-ben.
- A GraphQL tervezésének fontos szempontjai a következők: 1) Elnevezés, 2) Specifikusság, 3) Bemeneti objektum Egyedi hasznos adattípus és 4) Beágyazás.
- A GraphQL séma szerint, míg a REST végpontok szerint szervezhető.
- A GraphQL hátránya, hogy nem rendelkezik erőforrásokkal a háttérben.