A GraphQL API-k áttekintése az Azure API Managementben
A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint
Az API Management segítségével kezelheti a GraphQL API-kat – API-kat a GraphQL lekérdezési nyelv alapján. A GraphQL az API-k adatainak teljes és érthető leírását nyújtja, így az ügyfelek hatékonyan lekérhetik a szükséges adatokat. További információ a GraphQL-ről
Az API Management segít a GraphQL API-k importálásában, kezelésében, védelmében, tesztelésében, közzétételében és monitorozásában. Két API-modell közül választhat:
Átmenő GraphQL | Szintetikus GraphQL |
---|---|
▪️ Átmenő API a meglévő GraphQL-szolgáltatásvégpontra ▪️ GraphQL-lekérdezések, mutációk és előfizetések támogatása |
▪️ EGYÉNI GraphQL-sémán alapuló API ▪️ GraphQL-lekérdezések, mutációk és előfizetések támogatása ▪️ Egyéni feloldók konfigurálása például HTTP-adatforrásokra ▪️ GraphQL-sémák és GraphQL-alapú ügyfelek fejlesztése örökölt API-kból származó adatok felhasználása közben |
Elérhetőség
- A GraphQL API-k minden API Management szolgáltatásszinten támogatottak
- A szintetikus GraphQL API-k jelenleg nem támogatottak az API Management-munkaterületeken
- A GraphQL-előfizetések támogatása a szintetikus GraphQL API-kban jelenleg előzetes verzióban érhető el, és nem érhető el a Fogyasztási szinten
Mi az a GraphQL?
A GraphQL az API-k nyílt forráskódú, iparági szabvány szerinti lekérdezési nyelve. Az erőforrásokon végzett műveletek köré tervezett REST-stílusú API-któl eltérően a GraphQL API-k szélesebb körű használati eseteket támogatnak, és az adattípusokra, sémákra és lekérdezésekre összpontosítanak.
A GraphQL-specifikáció kifejezetten megoldja a REST API-kra támaszkodó ügyfél-webalkalmazások által tapasztalt gyakori problémákat:
- Sok kérést is igénybe vehet egy oldal adatigényeinek kielégítése
- A REST API-k gyakran több adatot adnak vissza, mint amennyit a renderelt oldal igényel
- Az ügyfélalkalmazásnak le kell kérdeznie az új információkat
A GraphQL API használatával az ügyfélalkalmazás megadhatja azokat az adatokat, amelyekre szüksége van egy lap megjelenítéséhez egy lekérdezési dokumentumban, amelyet egyetlen kérésként küldenek egy GraphQL-szolgáltatásnak. Az ügyfélalkalmazások valós időben feliratkozhatnak a GraphQL szolgáltatásból leküldett adatfrissítésre is.
Séma és típusok
Az API Managementben adjon hozzá egy GraphQL API-t egy GraphQL-sémából, amelyet vagy egy háttérbeli GraphQL API-végpontról kér le, vagy ön tölt fel. A GraphQL-séma a következőket írja le:
- Adatobjektum-típusok és mezők, amelyeket az ügyfelek a GraphQL API-ból kérhetnek le
- Az adatokon engedélyezett művelettípusok, például lekérdezések
- Egyéb típusok, például egyesítők és interfészek, amelyek további rugalmasságot és szabályozást biztosítanak az adatok felett
Például a felhasználói adatok egyszerű GraphQL-sémája és az összes felhasználó lekérdezése a következőképpen nézhet ki:
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Műveleti típusok
Az API Management a Következő művelettípusokat támogatja a GraphQL-sémákban. Ezekről a művelettípusokról további információt a GraphQL specifikációja tartalmaz.
Lekérdezés – Adatok lekérése a REST-beli művelethez
GET
hasonlóanMutáció – Kiszolgálóoldali adatok módosítása, hasonló a
PUT
REST-beli vagyPATCH
művelethezElőfizetés – Lehetővé teszi a feliratkozott ügyfelek valós idejű értesítését a GraphQL szolgáltatás adatainak változásairól
Ha például egy GraphQL-mutáción keresztül módosítják az adatokat, az előfizetett ügyfelek automatikusan értesülhetnek a változásról.
Fontos
Az API Management a graphql-ws WebSocket protokoll használatával implementált előfizetéseket támogatja. A lekérdezések és a mutációk nem támogatottak a WebSocketen keresztül.
Egyéb típusok
Az API Management támogatja a GraphQL-sémák egyesítési és felülettípusait .
Feloldók
A feloldók gondoskodnak a GraphQL-séma háttéradatokra való leképezéséről, így egy objektumtípus egyes mezőinek adatait állítják elő. Az adatforrás lehet EGY API, egy adatbázis vagy egy másik szolgáltatás. Például egy feloldófüggvény felel az előző példában szereplő lekérdezés adatainak users
visszaadásáért.
Az API Managementben létrehozhat egy feloldót egy objektumtípus mezőinek háttéradatforráshoz való leképezéséhez. A szintetikus GraphQL API-sémák mezőihez konfigurálhat feloldókat, de konfigurálhatja őket úgy is, hogy felülbírálják az átmenő GraphQL API-k által használt alapértelmezett mezőfeloldókat.
Az API Management jelenleg a HTTP API-n, Cosmos DB-n és Azure SQL-adatforrásokon alapuló feloldókat támogatja a GraphQL-sémák mezőinek adatainak visszaadásához. Minden feloldó testreszabott szabályzattal van konfigurálva az adatforráshoz való csatlakozáshoz és az adatok lekéréséhez:
Adatforrás | Feloldó szabályzat |
---|---|
HTTP-alapú adatforrás (REST vagy SOAP API) | http-adatforrás |
Cosmos DB-adatbázis | cosmosdb-data-source |
Azure SQL Database | sql-data-source |
Az előző lekérdezés HTTP API-alapú feloldója users
például leképezhet egy műveletet egy GET
háttérbeli REST API-ban:
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://myapi.contoso.com/api/users</set-url>
</http-request>
</http-data-source>
A feloldó beállításáról további információt a GraphQL-feloldó konfigurálása című témakörben talál.
GraphQL API-k kezelése
- A GraphQL API-k védelme a meglévő hozzáférés-vezérlési szabályzatok és a GraphQL-érvényesítési szabályzatok alkalmazásával a GraphQL-specifikus támadások elleni védelem és védelem érdekében.
- Ismerje meg a GraphQL-sémát, és futtasson tesztlekérdezéseket a GraphQL API-kon az Azure-ban és a fejlesztői portálokon.