Panoramica delle API GraphQL in Azure Gestione API
SI APPLICA A: Tutti i livelli di Gestione API
È possibile usare Gestione API per gestire le API GraphQL: basate sul linguaggio di query GraphQL. GraphQL fornisce una descrizione completa e comprensibile dei dati in un'API, consentendo ai client di recuperare in modo efficiente esattamente i dati necessari. Altre informazioni su GraphQL
Gestione API consente di importare, gestire, proteggere, testare, pubblicare e monitorare le API GraphQL. È possibile scegliere uno dei due modelli api seguenti:
GraphQL pass-through | GraphQL sint. |
---|---|
▪️ API pass-through all'endpoint di servizio GraphQL esistente ▪️ Supporto per query GraphQL, mutazioni e sottoscrizioni |
▪️ API basata su uno schema GraphQL personalizzato ▪️ Supporto per query GraphQL, mutazioni e sottoscrizioni ▪️ Configurare resolver personalizzati, ad esempio in origini dati HTTP ▪️ Sviluppare schemi GraphQL e client basati su GraphQL durante l'utilizzo dei dati dalle API legacy |
Disponibilità
- Le API GraphQL sono supportate in tutti i livelli di servizio Gestione API
- Le API GraphQL sintetiche non sono attualmente supportate nelle aree di lavoro Gestione API
- Il supporto per le sottoscrizioni GraphQL nelle API GraphQL sintetiche è attualmente in anteprima e non è disponibile nel livello Consumo
Che cos'è GraphQL?
GraphQL è un linguaggio di query open source standard per le API. A differenza delle API di tipo REST progettate per le azioni sulle risorse, le API GraphQL supportano un set più ampio di casi d'uso e concentrarsi su tipi di dati, schemi e query.
La specifica GraphQL risolve in modo esplicito i problemi comuni riscontrati dalle app Web client che si basano sulle API REST:
- Può essere necessario un numero elevato di richieste per soddisfare le esigenze di dati per una singola pagina
- Le API REST spesso restituiscono più dati rispetto alle esigenze della pagina di cui viene eseguito il rendering
- L'app client deve eseguire il polling per ottenere nuove informazioni
Usando un'API GraphQL, l'app client può specificare i dati necessari per eseguire il rendering di una pagina in un documento di query inviato come singola richiesta a un servizio GraphQL. Un'app client può anche sottoscrivere gli aggiornamenti dei dati inseriti dal servizio GraphQL in tempo reale.
Tipi di schema e operazioni
In Gestione API aggiungere un'API GraphQL da uno schema GraphQL, recuperata da un endpoint DELL'API GraphQL back-end o caricata dall'utente. Uno schema GraphQL descrive:
- Tipi di oggetto dati e campi che i client possono richiedere da un'API GraphQL
- Tipi di operazione consentiti nei dati, ad esempio query
Ad esempio, uno schema GraphQL di base per i dati utente e una query per tutti gli utenti potrebbe avere un aspetto simile al seguente:
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Gestione API supporta i tipi di operazione seguenti negli schemi GraphQL. Per altre informazioni su questi tipi di operazione, vedere la specifica GraphQL.
Query : recupera i dati, in modo analogo a un'operazione
GET
in RESTMutazione : modifica i dati lato server, simili a un'operazione
PUT
oPATCH
in RESTSottoscrizione : consente di inviare notifiche ai client sottoscritti in tempo reale sulle modifiche ai dati nel servizio GraphQL
Ad esempio, quando i dati vengono modificati tramite una mutazione GraphQL, i client sottoscritti potrebbero ricevere automaticamente una notifica sulla modifica.
Importante
Gestione API supporta le sottoscrizioni implementate usando il protocollo WebSocket graphql-ws. Le query e le mutazioni non sono supportate su WebSocket.
Resolver
I resolver si occupano del mapping dello schema GraphQL ai dati back-end, producendo i dati per ogni campo in un tipo di oggetto. L'origine dati può essere un'API, un database o un altro servizio. Ad esempio, una funzione resolver sarà responsabile della restituzione dei dati per la users
query nell'esempio precedente.
In Gestione API è possibile creare un sistema di risoluzione per eseguire il mapping di un campo in un tipo di oggetto a un'origine dati back-end. È possibile configurare i resolver per i campi negli schemi API GraphQL sintetici, ma è anche possibile configurarli per eseguire l'override dei resolver di campi predefiniti usati dalle API GraphQL pass-through.
Gestione API supporta attualmente i resolver basati su API HTTP, Cosmos DB e origini dati SQL di Azure per restituire i dati per i campi in uno schema GraphQL. Ogni sistema di risoluzione viene configurato usando criteri personalizzati per connettersi all'origine dati e recuperare i dati:
Origine dati | Criterio del sistema di risoluzione |
---|---|
Origine dati basata su HTTP (API REST o SOAP) | http-data-source |
Database Cosmos DB | cosmosdb-data-source |
Database SQL di Azure | sql-data-source |
Ad esempio, un sistema di risoluzione basato su API HTTP per la query precedente users
potrebbe eseguire il mapping a un'operazione GET
in un'API REST back-end:
<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>
Per altre informazioni sulla configurazione di un sistema di risoluzione, vedere Configurare un resolver GraphQL.
Gestire le API GraphQL
- Proteggere le API GraphQL applicando criteri di controllo di accesso esistenti e criteri di convalida GraphQL per proteggere e proteggere da attacchi specifici di GraphQL.
- Esplorare lo schema GraphQL ed eseguire query di test sulle API GraphQL nei portali di Azure e per sviluppatori.