GraphQL: A REST alternatívája a HTTP-n

GraphQL: A REST alternatívája a HTTP-n

Számos nyílt forráskódú építészeti szabvány létezik az alkalmazások építésére és terjesztésére. A REST (Representational State Transfer), a SOAP (Simple Object Access Protocol), az RPC (Remote Procedural Call) és a GraphQL API-k a legnépszerűbbek.





A RESTful API-k a leggyakrabban használt API architektúra szabványok. Ha összetett RESTful API-kat írt sok végponttal, akkor valószínűleg rájött, milyen bonyolultak is lehetnek. Ez különösen igaz, ha csak csekély eltérések vannak a végpontok között.





MAKEUSEOF A NAP VIDEÓJA

Problémák adódhatnak az adatlekéréssel kapcsolatban is, mivel a RESTful API-k nem elég rugalmasak bizonyos adatok kiválasztásához. A GraphQL megoldja a RESTful API-k ezeket a problémáit.





Mi az a GraphQL?

A GraphQL (Graph Query Language) egy lekérdezési nyelv és futási környezet API-k építéséhez. A sok végponttal rendelkező REST API-kkal ellentétben a GraphQL API-knak egy belépési pontja van. Konkrét adatokat kérhet le, ha leírja azokat a lekérdezésekben.

Az GraphQL specifikáció meghatározza a lekérdezési nyelvet és a GraphQL szerverek működését. GraphQL API-kat készíthet és használhat kiszolgálóoldali nyelveken a Pythontól a Javascript , és minden olyan nyelv, amely támogatja a HTTP-t.



A Meta 2012-ben építette a GraphQL-t a REST alternatívájaként a HTTP-n alapuló építéshez. 2015-ben adták ki a GraphQL-t nyílt forráskódú szabványként. Ma a GraphQL alapítvány felügyeli a GraphQL specifikáció fejlesztését.

A GraphQL meglehetősen új, alacsony elterjedtséggel, és rejtett költségekkel jár a használata. A GraphQL API-k felépítése szükségtelenül bonyolult lehet, különösen a néhány végponttal rendelkező kis projektek esetében.





Ezenkívül az összes GraphQL-kérés végül 200-as állapotkódot ad vissza, függetlenül a kérés állapotától.

Hogyan működik a GraphQL?

  GraphQL's functions and syntax

nem úgy mint REST, amely erőforrás-orientált , a GraphQL megköveteli, hogy az adatokra grafikonként gondoljon, hogy interakcióba lépjen az adatokkal. Megadhatja az adatok szerkezetét, és a specifikáció robusztus lekérdezési felületet biztosít az API-val HTTP-n keresztüli interakcióhoz. Különféle funkciókat használhat, attól függően GraphQL csomag vagy könyvtár a használatát választod.





A GraphQL sémák olyan objektumtípusokat tartalmaznak, amelyek meghatározzák a kérhető objektumot és annak elérhető mezőit. API lekérdezések és mutációk esetén a GraphQL csomag érvényesíti a lekérdezéseket és végrehajtja a lekérdezéseket a megadott kezelő függvények (feloldók) alapján.

hogyan lehet wifit hozni a házba internet nélkül

Miért érdemes GraphQL-t használni?

A REST egy könnyen használható szabvány, és a legtöbb programozási nyelv rendelkezik eszközökkel a RESTful API-k gyors létrehozásához. A RESTful API-k létrehozásával és fogyasztásával azonban számos probléma adódik.

Íme néhány probléma a REST-tel kapcsolatban, amelyek miatt a fejlesztők a GraphQL-t részesítik előnyben bizonyos használati esetekben.

Nem hatékony adatlekérés

A RESTful API-k a végpont specifikációi alapján továbbítják az adatokat. Nem elég rugalmasak ahhoz, hogy a végpont kezelő funkciójában keményen kódolt adatokon túlmenően is lekérjenek adatokat.

Tegyük fel, hogy egy végpont hívás közbeni adatok listáját adja vissza, és értékeket vagy feltételeket kell megadnia a mezőkhöz. Ebben az esetben a fejlesztőnek létre kell hoznia egy végpontot, és meg kell határoznia az üzleti logikát az adatok visszaküldéséhez. Az értékes erőforrást manuálisan is elemezheti, ami végül több időt vesz igénybe.

A GraphQL megoldja a nem hatékony adatlekérést, mivel lekérdezheti az API-kat, hogy a feltételek és specifikációk alapján rugalmasan adjanak vissza adatokat.

A GraphQL API-k interaktívak; könnyen, olvasható szintaxisban megadhatja a lekérni kívánt adatokat.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

A fenti GraphQL lekérdezés a felhasználó séma olyan bejegyzésekhez, ahol a kor mező értéke 89. A lekérdezésben van egy beágyazott lekérdezés azokhoz a bejegyzésekhez, ahol a élő mező értékeli igaz . Visszaadja a név, életrajz és nemzetiség mezőket a sémából.

Gyors fejlesztés

A GraphQL API-k létrehozása és felhasználása könnyebb, mint a REST használata, különösen a projekt méretének növekedésével. A fejlesztési szakaszban nem kell annyi útvonalat és kezelőfunkciót kifejlesztenie, mint a RESTful API-k fejlesztésekor. A GraphQL API-k használata nem olyan fárasztó, mint a RESTful API-k használata.

A REST-ben a különböző végpontok különböző erőforrásokhoz biztosítanak hozzáférést, ellentétben a GraphQL-lel, ahol egyetlen végpont van. Ez rugalmasságot és teljesítményt eredményez, és a lekérdezések különböző feloldó függvényeket hívhatnak meg.

A GraphQL sémadefiníciós nyelv

A GraphQL sémadefiníciós nyelv (SDL) határozza meg a GraphQL szolgáltatások sémáit.

A GraphQL SDL szintaxisa könnyen olvasható és érthető. Megadhatja a séma szerkezetét egy fájlban a .graphql vagy .graphqls kiterjesztés.

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

A fenti GraphQL kód egy GraphQL API sémája, amely meghatározza a kérések API struktúráját. A séma meghatározza az API CRUD funkcióit.

A kliens oldalon a séma felépítése és a kliens adatai vagy művelete alapján a kliens végrehajthat egy lekérdezés (GET vagy DELETE a REST-ben) vagy a mutáció (PUT vagy POST).

Íme egy példa a Emberi séma.

query Human { 
name
age
}

A fenti lekérdezés az emberi sémát adja vissza név és kor terepi adatok.

A GraphQL mutációk szintaxisa meglehetősen eltérő a lekérdezésekhez képest. Íme egy példa mutációs műveletre a Emberi séma.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

A mutációs kód bemenet név és kor mezőket az ügyfélnek, és visszaadja a mezőkből származó adatokat.

hogyan kell beállítani a paypal -t a pénz fogadásához

Szüksége lesz egy adattárra a kitartás érdekében, amikor a GraphQL API-t építi. A REST-hez és a legtöbb HTTP-alapú webarchitektúrához hasonlóan a GraphQL is állapot nélküli, és bármilyen adattárat vagy adatbázist használhat az alkalmazáshoz.

GraphQL API készítése

  GraphQL által támogatott nyelvek

A GraphQL egy specifikáció, és a GraphQL-t a legnépszerűbb szerveroldali nyelveken is elkészítheti. Meg kell találnia egy könyvtárat a projekthez szükséges funkciókkal.

GraphQL könyvtár kiválasztásakor olyan funkciókban gazdag könyvtárat szeretne használni, amely támogatja az összes GraphQL típust és műveletet. A legtöbb könyvtár vagy séma-első, vagy kód-első megközelítést alkalmaz. Az előbbiben egy GraphQL sémát definiál, a könyvtár pedig feloldókat és sablonkódot állít elő. Utóbbi esetében séma meghatározása nélkül keményen kódolja a feloldókat.

A GraphQL-t elfogadják

A GraphQL kezdete óta a fejlesztők és a vállalatok eszközöket adtak ki a használat egyszerűsítésére. Ezek csökkenthetik a kisebb és közepes projektek fejlesztési idejét.

További információért tekintse meg a nyílt forráskódú GraphQL klienseket, a GraphQL dokumentációját és specifikációit.