Share via


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óan

  • Mutáció – Kiszolgálóoldali adatok módosítása, hasonló a PUT REST-beli vagy PATCH művelethez

  • Elő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.

Következő lépések