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?
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
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.