Overzicht van GraphQL-API's in Azure API Management
VAN TOEPASSING OP: Alle API Management-lagen
U kunt API Management gebruiken om GraphQL-API's - API's te beheren op basis van de GraphQL-querytaal. GraphQL biedt een volledige en begrijpelijke beschrijving van de gegevens in een API, waardoor clients de kracht hebben om precies precies de gegevens op te halen die ze nodig hebben. Meer informatie over GraphQL
API Management helpt u bij het importeren, beheren, beveiligen, testen, publiceren en bewaken van GraphQL-API's. U kunt een van de twee API-modellen kiezen:
Passthrough GraphQL | Synthetische GraphQL |
---|---|
▪️ Passthrough-API naar bestaand GraphQL-service-eindpunt ▪️ Ondersteuning voor GraphQL-query's, mutaties en abonnementen |
▪️ API op basis van een aangepast GraphQL-schema ▪️ Ondersteuning voor GraphQL-query's, mutaties en abonnementen ▪️ Aangepaste resolvers configureren, bijvoorbeeld naar HTTP-gegevensbronnen ▪️ GraphQL-schema's en GraphQL-clients ontwikkelen terwijl gegevens uit verouderde API's worden gebruikt |
Beschikbaarheid
- GraphQL-API's worden ondersteund in alle API Management-servicelagen
- Synthetische GraphQL-API's worden momenteel niet ondersteund in API Management-werkruimten
- Ondersteuning voor GraphQL-abonnementen in synthetische GraphQL-API's is momenteel in preview en is niet beschikbaar in de verbruikslaag
Wat is GraphQL?
GraphQL is een opensource-, industriestandaard querytaal voor API's. In tegenstelling tot REST-API's die zijn ontworpen rond acties voor resources, ondersteunen GraphQL-API's een bredere set gebruiksvoorbeelden en focus op gegevenstypen, schema's en query's.
De GraphQL-specificatie lost expliciet veelvoorkomende problemen op die zijn opgetreden door clientweb-apps die afhankelijk zijn van REST API's:
- Het kan een groot aantal aanvragen duren om te voldoen aan de gegevensbehoeften voor één pagina
- REST API's retourneren vaak meer gegevens dan nodig is voor de pagina die wordt weergegeven
- De client-app moet pollen om nieuwe informatie op te halen
Met behulp van een GraphQL-API kan de client-app de gegevens opgeven die ze nodig hebben om een pagina weer te geven in een querydocument dat als één aanvraag naar een GraphQL-service wordt verzonden. Een client-app kan zich ook abonneren op gegevensupdates die in realtime worden gepusht vanuit de GraphQL-service.
Schema en typen
Voeg in API Management een GraphQL-API toe vanuit een GraphQL-schema, opgehaald uit een back-end GraphQL API-eindpunt of geüpload door u. In een GraphQL-schema wordt het volgende beschreven:
- Gegevensobjecttypen en -velden die clients kunnen aanvragen vanuit een GraphQL-API
- Bewerkingstypen die zijn toegestaan voor de gegevens, zoals query's
- Andere typen, zoals samenvoegingen en interfaces, die extra flexibiliteit en controle over de gegevens bieden
Een eenvoudig GraphQL-schema voor gebruikersgegevens en een query voor alle gebruikers kan er bijvoorbeeld als volgt uitzien:
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Bewerkingstypen
API Management ondersteunt de volgende bewerkingstypen in GraphQL-schema's. Zie de GraphQL-specificatie voor meer informatie over deze bewerkingstypen.
Query : haalt gegevens op, vergelijkbaar met een
GET
bewerking in RESTMutatie : wijzigt gegevens aan de serverzijde, vergelijkbaar met een
PUT
ofPATCH
bewerking in RESTAbonnement : hiermee wordt het in realtime informeren van geabonneerde clients over wijzigingen in gegevens in de GraphQL-service ingeschakeld
Wanneer gegevens bijvoorbeeld worden gewijzigd via een GraphQL-mutatie, kunnen geabonneerde klanten automatisch op de hoogte worden gesteld van de wijziging.
Belangrijk
API Management ondersteunt abonnementen die zijn geïmplementeerd met behulp van het Graphql-ws WebSocket-protocol. Query's en mutaties worden niet ondersteund via WebSocket.
Andere typen
API Management ondersteunt de samenvoeg - en interfacetypen in GraphQL-schema's.
Resolvers
Resolvers zorgen ervoor dat het GraphQL-schema wordt toegewezen aan back-endgegevens, waardoor de gegevens voor elk veld in een objecttype worden geproduceerd. De gegevensbron kan een API, een database of een andere service zijn. Een resolver-functie is bijvoorbeeld verantwoordelijk voor het retourneren van gegevens voor de users
query in het voorgaande voorbeeld.
In API Management kunt u een resolver maken om een veld in een objecttype toe te wijzen aan een back-endgegevensbron. U configureert resolvers voor velden in synthetische GraphQL API-schema's, maar u kunt ze ook configureren om de standaardveld-resolvers te overschrijven die worden gebruikt door pass-through GraphQL-API's.
API Management ondersteunt momenteel resolvers op basis van HTTP-API-, Cosmos DB- en Azure SQL-gegevensbronnen om de gegevens voor velden in een GraphQL-schema te retourneren. Elke resolver wordt geconfigureerd met behulp van een op maat gemaakt beleid om verbinding te maken met de gegevensbron en de gegevens op te halen:
Gegevensbron | Resolver-beleid |
---|---|
Op HTTP gebaseerde gegevensbron (REST of SOAP API) | http-data-source |
Cosmos DB-database | cosmosdb-data-source |
Azure SQL database (Azure SQL-database) | sql-data-source |
Een op HTTP API gebaseerde resolver voor de voorgaande users
query kan bijvoorbeeld worden toegewezen aan een GET
bewerking in een back-end 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>
Zie Een GraphQL-resolver configureren voor meer informatie over het instellen van een resolver.
GraphQL-API's beheren
- Beveilig GraphQL-API's door zowel bestaand beleid voor toegangsbeheer als een GraphQL-validatiebeleid toe te passen om graphQL-specifieke aanvallen te beveiligen en te beveiligen.
- Verken het GraphQL-schema en voer testquery's uit op de GraphQL-API's in de Azure- en ontwikkelaarsportals.