Mi a GraphQL? A közös mítoszok megsemmisültek.

Szeretek beszélni a GraphQL-ről, különösen olyan emberekkel, akik a GraphQL-lel dolgoztak, vagy a GraphQL elfogadásán gondolkodtak. Az emberek egyik gyakori kérdése, hogy miért akar valaki áttérni a GraphQL-re a REST-ből.

Rengeteg olyan erőforrás létezik, amelyek a REST és a GraphQL közötti különbségről beszélnek, és ezeket nagyszerű megnézni, ha érdekel, hogy ezek a kettő hogyan különbözik egymástól. Ebben a blogbejegyzésben néhány gyakori tévhitre és kérdésre szeretnék kitérni a GraphQL kapcsán.

Milyen előnyökkel jár a GraphQL a kezelőfelületen?

Kezelőmérnökként a következő okokból szeretek együtt dolgozni egy GraphQL API-val:

  1. A lekérdezéseket és mutációkat azonnal tesztelheti a GraphiQL vagy a játszótér használatával
  2. A kevesebb adat könnyebb állami kezelést jelent
  3. A nehéz megoldásokat a felbontókon keresztül tölti le a szerverre
  4. A dokumentáció naprakész és interaktív

Milyen jobb, mint a REST?

  1. Egyetlen végpont van az összes erőforrás lekérésére.
  2. Kerüli az adatok túlzott lekérését (túl sok mezőt kap, ha csak néhány mezőre van szükség).
  3. Kerüli az adatok lekérését (több API-t kell hívnia, mert egy API nem adja vissza az összes szükséges információt).

Mítosz: A GraphQL-t a grafikon-adatbázisok lekérdezésére használják.

A GraphQL használható grafikon adatbázis lekérdezésére, de ez nem az egyetlen használati esete. A GraphQL "grafikonja" az adatok grafikonszerű felépítésének ábrázolására szolgál. Az adatokat a csomópontok és az egymáshoz való kapcsolódás szempontjából modellezi. A modellezéshez a sémát használják.

A GraphQL specifikációban nincs olyan korlátozás, amely előírja, hogy az adatforrásnak grafikonnak kell lennie.

Tévhit: A GraphQL csak olyan adatbázisokkal vagy adatforrásokkal működik, amelyek grafikon alapúak.

Tévhit, hogy a GraphQL átvétele érdekében át kell írnia az adatbázisát. A GraphQL bármilyen adatforrás, beleértve az adatbázisokat is, körülölelő lehet. A GraphQL egy query language for your API- ami azt jelenti, hogy szintaxisa annak, hogyan kell adatokat kérni.

Mítosz: Az adatok lekérése a felbontókkal, lekérdezésekkel és mutációkkal varázslatosan működik.

Meg kell határoznia, hogy pontosan mit kell tennie mindegyiküknek. Írni fog olyan függvényeket, amelyek hívást kapnak, amikor a lekérdezések elindulnak, és olyan függvényeket ír, amelyek pontosan azoknak az adatoknak a küldésére szolgálnak, amelyekre szüksége van, és tudják, melyik API-t kell meghívni. A felbontók hívásával meghatározhatja, hogy az adatok milyen funkciókkal térnek vissza.

Mítosz: A GraphQL helyettesíti a Redux-ot vagy bármelyik állapotkezelő könyvtárat

A Redux egy állami menedzsment könyvtár. A GraphQL nem állami menedzsment könyvtár. A GraphQL segít kevesebb adat megszerzésében, ami viszont kevesebb adatot kezel a kliens oldalon, de ez nem állapotkezelési megoldás.

Akkor is kezelnie kell az állapotot - bár könnyebb módon. Az olyan ügyfélkönyvtárak, mint az Apollo és a Relay, felhasználhatók az állapot kezelésére, és beépített gyorsítótárral rendelkeznek. A GraphQL nem helyettesíti a Redux-et - segít csökkenteni annak szükségességét.

Tévhit: A GraphQL egy adatbázis-nyelv.

A GraphQL egy programozási nyelv - konkrétan egy lekérdező nyelv. A GraphQL specifikációja meghatározza, hogy a GraphQL futásidejének miként kell megvalósítania a nyelvet, és hogyan kell az adatokat kommunikálni az ügyfél és a szerver között.

A GraphQL-t adatkérésre használják, és az elülső végétől a végéig bármely rétegben több helyen is használható. Vannak olyan adatbázisok, mint a DGraph, amelyek a GraphQL specifikációt valósítják meg, lehetővé téve az ügyfelek számára, hogy a GraphQL segítségével lekérdezzék az adatbázist.

Tévhit: Nem lehet REST végpont a megvalósításban a GraphQL segítségével.

Az alkalmazásba több REST végpontot vagy akár több GraphQL végpontot is csatlakoztathat. Bár nem legjobb gyakorlat, ha több REST végpont van, technikailag lehetséges.

Mítosz: A GraphQL-t nehéz bevezetni egy meglévő projektben.

A GraphQL csatlakoztatható egy meglévő projekthez. Kezdheti az üzleti logika egyik összetevőjével, csatlakoztathat egy GraphQL végpontot, és elkezdheti az adatok beolvasását a GraphQL-en keresztül. A GraphQL használatának megkezdéséhez nem kell teljes projektet selejteznie.

Ha a váltás a GraphQL végpontra még mindig félelmetes feladat, akkor kezdje úgy, hogy a REST végpontot felbontókkal maszkolja egy GraphQL végpontba.

Tévhit: A GraphQL csak a front-end fejlesztők számára készült

A GraphQL platform agnosztikus. Véleményem szerint a GraphQL előnyeinek szépsége belülről kifelé - a hátsó végtől az elejéig kezdődik.

Háttér-fejlesztőként kibővítheti az API-t mezők hozzáadásával anélkül, hogy közzé kellene tennie az API új verzióját. Nem kell különféle végpontokat írni különféle igényekhez, mivel az ügyfelek bármilyen szükséges adatot be tudnak szerezni.

A GraphQL segítségével láthatja, hogy az ügyfelek milyen mezőket használnak, ami hatékony műszerezést biztosít.

Tévhit: A GraphQL maga fog írni adatbázis-lekérdezéseket, csak meg kell adnom a sémákat és a közöttük lévő kapcsolatot

Lehet, hogy meg kell írnia az adatbázis-lekérdezéseket, attól függően, hogy melyik GraphQL könyvtárat használja. Néhány könyvtár, például a Neo4j és a Prisma, adatbázis-lekérdezéseket is ír, és elvonja a logikát a fejlesztőtől. Mindent meg kell határozni, beleértve a megoldókat, a lekérdezéseket és a mutációkat is.

Tévhit: A GraphQL segítségével grafikonok rajzolhatók.

A GraphQL számára újdonságnak számító emberek gyakran azt gondolják, hogy ez egy grafikontervező szoftver, például a D3. A GraphQL nem ábrázolja a grafikonokat.

Mítosz: A GraphQL bonyolult klienseket igényel, és szinte lehetetlen megtenni egy egyszerű HTTP-lekéréssel

Tévhit: Az ORM-ek helyébe lép.

Az utóbbi időben sok DB és GraphQL integrációt látunk, de maga a GraphQL nem az.

Szerintem a GraphQL fantasztikus! Könyvtárak sokasága segíti a felhasználókat a GraphQL használatának megkezdésében. Ha érdekel a GraphQL megismerése, kezdje a dokumentációval, vagy nézze meg ezt az Udemy tanfolyamot, amelyet hasznosnak találtam, amikor még nem voltam a GraphQL.

Háborút hirdetem!

var háború; #DevJoke

- Shruti Kapoor (@ shrutikapoor08) 2019. december 12