Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Alla nivåer av API Management
Du kan använda API Management för att hantera GraphQL-API:er, som är API:er baserade på GraphQL-frågespråket. GraphQL tillhandahåller en komplett och förståelig beskrivning av data i ett API, vilket ger klienter möjligheten att effektivt hämta exakt den data de behöver. Läs mer om GraphQL.
API-hantering hjälper dig att importera, hantera, skydda, testa, publicera och övervaka GraphQL API:er. Du kan välja en av två API-modeller:
| GenomströmningsgrafQL | Syntetisk GraphQL |
|---|---|
| ▪️ Genomströmnings-API till befintlig GraphQL-tjänstslutpunkt ▪️ Stöd för GraphQL-frågor, mutationer och prenumerationer |
▪️ API baserad på ett anpassat GraphQL-schema ▪️ Stöd för GraphQL-frågor, mutationer och prenumerationer ▪️ Konfigurera anpassade lösare, till exempel för HTTP-datakällor ▪️ Utveckla GraphQL-scheman och GraphQL-baserade klienter samtidigt som data från äldre API:er används ▪️ Syntetiska prenumerationer kräver inte upplösare. Se publish-event policy. |
Tillgänglighet
- GraphQL-API:er stöds på alla API Management-tjänstnivåer.
- Syntetiska GraphQL-API:er stöds för närvarande inte i API Management-arbetsytor.
- Stöd för GraphQL-prenumerationer i syntetiska GraphQL-API:er är för närvarande i förhandsversion och är inte tillgängligt på förbrukningsnivån.
Vad är GraphQL?
GraphQL är ett frågespråk för API:er med öppen källkod som är industristandard. Till skillnad från REST-stil API:er som är utformade kring åtgärder över resurser, stöder GraphQL API:er ett bredare spektrum av användningsfall och fokuserar på datatyper, scheman och frågor.
GraphQL-specifikationen löser uttryckligen vanliga problem som klientwebbappar stöter på och är beroende av REST-API:er.
- Det kan krävas ett stort antal begäranden för att uppfylla databehoven för en enda sida.
- REST-API:er returnerar ofta mer data än vad som behövs av sidan som återges.
- Klientappen måste avsöka för att få ny information.
Med hjälp av ett GraphQL-API kan klientappen ange de data som behövs för att återge en sida i ett frågedokument som skickas som en enda begäran till en GraphQL-tjänst. En klientapp kan också prenumerera på datauppdateringar som skickas från GraphQL-tjänsten i realtid.
Schema och typer
I API Management lägger du till ett GraphQL-API från ett GraphQL-schema, antingen hämtat från en GraphQL API-slutpunkt för serverdelen eller uppladdat av dig. Ett GraphQL-schema beskriver:
- Dataobjekttyper och fält som klienter kan begära från ett GraphQL-API.
- Åtgärdstyper som tillåts för data, till exempel frågor.
- Andra typer, till exempel fackföreningar och gränssnitt, som ger ytterligare flexibilitet och kontroll över data.
Ett grundläggande GraphQL-schema för användardata och en fråga för alla användare kan till exempel se ut så här:
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Operationstyper
API Management stöder följande operationstyper i GraphQL-scheman. Mer information om dessa åtgärdstyper finns i GraphQL-specifikationen.
Fråga: Hämtar data, ungefär som en
GETåtgärd i REST.Mutation: Ändrar data på serversidan, ungefär som en
PUT- ellerPATCH-åtgärd i REST.Prenumeration: Gör det möjligt att meddela prenumerationsklienter i realtid om ändringar i data i GraphQL-tjänsten.
När data till exempel ändras via en GraphQL-mutation kan prenumerationsklienter meddelas automatiskt om ändringen.
Viktigt
API Management stödjer prenumerationer implementerade med hjälp av graphql-ws WebSocket-protokollet. Frågor och mutationer stöds inte via WebSocket.
Andra typer
API Management stöder union- och interface-typer i GraphQL-scheman.
Lösare
Resolvers hanterar mappningen av GraphQL-schemat till backend-data och producerar data för varje fält i en objekttyp. Datakällan kan vara ett API, en databas eller en annan tjänst. Till exempel, en resolverfunktion skulle vara ansvarig för att returnera data för users frågan i det föregående exemplet.
I API-hantering kan du skapa en lösare för att koppla ett fält i en objekttyp till en backend-datakälla. Du konfigurerar resolverare för fält i syntetiska GraphQL API-scheman, men du kan också konfigurera dem för att ersätta de standardfältresolverare som används av genomgångs-GraphQL API:er.
API-hantering stödjer för närvarande lösare baserade på HTTP API, Cosmos DB och Azure SQL-datakällor för att returnera data för fält i ett GraphQL-schema. Varje resolver konfigureras med en anpassad policy för att ansluta till datakällan och hämta data.
| Datakälla | Lösarpolicy |
|---|---|
| HTTP-baserad datakälla (REST eller SOAP API) | http-data-source |
| Cosmos DB databas | cosmosdb-data-source |
| Azure SQL database | sql-data-source |
Till exempel kan en API-baserad HTTP-resolver för den föregående users frågan kartlägga till en GET operation i ett backend REST-API.
<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>
För mer information om hur du ställer in en resolver, se Konfigurera en GraphQL resolver.
Hantera GraphQL-API:er
- Skydda GraphQL API:er genom att tillämpa både befintliga åtkomstkontrollpolicyer och en GraphQL-valideringspolicy för att säkra och skydda mot GraphQL-specifika attacker.
- Utforska GraphQL-schemat och kör testfrågor mot GraphQL-API:erna i Azure- och utvecklarportalerna.