Utilizzo di GraphQL

Questa pagina si applica a Apigee e Apigee ibridi.

Visualizza documentazione di Apigee Edge.

Il criterio GraphQL può analizzare i payload delle richieste GraphQL nel flusso di messaggi , verifica la richiesta in base a uno schema GraphQL o a entrambi.

Il criterio GraphQL può analizzare i payload GraphQL nel flusso di messaggi , verifica le richieste GraphQL in base a uno schema o in entrambi i modi.

Puoi utilizzare il criterio GraphQL per:

  • Assicurati che le tue API elaborino solo le richieste conformi allo schema fornito.
  • Imporre restrizioni al payload impostando un massimo per il numero di frammenti consentiti.
  • Associare GraphQL ai prodotti API.
  • Utilizzo del criterio Oauth2, VerifyAPIKey e della quota proprio come in REST.

GraphQL supporta i seguenti tipi di payload:

  • POST dei payload di GraphQL con Content-Type : application/graphql
  • POST dei payload di GraphQL con Content-Type: applcation/json
  • GET dei payload graficoQL in cui il payload è un parametro di query
di Gemini Advanced.

Per un breve riepilogo delle opzioni per il criterio GraphQL, consulta GraphQL. opzioni di seguito.

Per scoprire di più su GraphQL, consulta GraphQL.org.

Esempio

L'esempio seguente mostra come caricare uno schema GraphQL in Apigee e utilizzarlo per convalidare le richieste con i contenuti GraphQL.

di Gemini Advanced.

Crea un file di schema

Per eseguire l'esempio, crea prima un file di schema GraphQL con il seguente contenuto:

type Query {
  allPersons(last: Int): [Person!]!
}

type Mutation {
  createPerson(name: String!, age: Int!): Person!
}

type Subscription {
  newPerson: Person!
}

type Person {
  name: String!
  sex: String!
  age: Int!
  posts: [Post!]!
}

type Post {
  title: String!
  author: Person!
}

Salva il file con il nome che desideri utilizzare, seguito dall'estensione .graphql.

Aggiungi il criterio GraphQL nella UI di Apigee

Nuovo editor proxy

Innanzitutto, crea il criterio GraphQL come segue:

  1. Accedi all'UI di Apigee.
  2. Nella barra di navigazione, seleziona Sviluppo > Proxy API.
  3. Nell'elenco dei proxy, seleziona il proxy API per cui vuoi utilizzare il criterio GraphQL.
  4. Fai clic sulla scheda SVILUPPO.
  5. Nel riquadro a sinistra, fai clic sul pulsante + accanto alla cartella Criteri.
  6. Nella finestra di dialogo Crea criterio, fai clic nel campo Seleziona il tipo di criterio e Scorri verso il basso fino a Mediazione e seleziona GraphQL

    Finestra di dialogo Crea criterio di GraphQL.

    Inserisci un Nome visualizzato e un Nome.

    Quindi, seleziona un file di schema GraphQL come segue:

    1. Fai clic sul campo Schema File (File di schema). Vengono visualizzate le seguenti opzioni:
      • Nessuno schema. Se selezioni questa opzione, Apigee non utilizzerà uno schema per convalidare le richieste.
      • Importa schema GraphQL (.graphql)
    2. Seleziona Importa schema GraphQL (.graphql). Vengono visualizzate le seguenti:

      Scegli un file di schema.
    3. Fai clic su Scegli file e seleziona il file di schema creato in precedenza. (che deve avere l'estensione .graphql). Il file viene visualizzato nel campo Nome schema.

      Schema selezionato.
  7. Fai clic su Crea per creare il criterio.

Ora che hai creato il criterio GraphQL, puoi collegarlo a un passaggio in PreFlow:

  1. Seleziona Proxy Endpoints > predefinita > PreFlow nel riquadro a sinistra:

    Seleziona gli endpoint di destinazione per PreFlow in Proxy Explorer.

  2. Fai clic sul pulsante + accanto a PreFlow nel riquadro Risposta in basso a destra nell'Editor visivo:

    Fai clic sul pulsante + accanto a PreFlow nel riquadro Risposta.

  3. Nella finestra di dialogo Aggiungi passaggio criterio, seleziona il criterio GQL-.
  4. Fai clic su Aggiungi per allegare il criterio.
  5. Fai clic su Salva per salvare la revisione corrente con le modifiche.
  6. Per eseguire il deployment delle modifiche, fai clic sulla scheda Panoramica e seleziona Esegui il deployment.

Consulta la sezione Opzioni grafica di seguito per conoscere le opzioni che puoi impostare. il criterio GraphQL.

Editor proxy classico

  1. Accedi all'UI di Apigee.
  2. Nella barra di navigazione, seleziona Sviluppo > Proxy API.
  3. Nell'elenco dei proxy, seleziona il proxy API per cui vuoi utilizzare il criterio GraphQL.
  4. Fai clic sulla scheda SVILUPPO.
  5. Nel riquadro Flow: PreFlow, fai clic sul pulsante + Step.

    Pulsante Più passaggi.
  6. Nel riquadro Add Step (Aggiungi passaggio), scorri verso il basso nella parte inferiore della sezione Mediazione e seleziona GraphQL.

    Aggiungi il criterio GraphQL.

    Il riquadro Add Step mostra le seguenti opzioni:

    • Nome visualizzato: il nome visualizzato del criterio.
    • Nome: nome interno del criterio.
    • File di schema: opzione per caricare un file contenente uno schema GraphQL che Apigee utilizzerà per convalidare le richieste con contenuti GraphQL.

    Per utilizzare uno schema, segui questi passaggi:

    1. Fai clic sul campo Schema File (File di schema). Vengono visualizzate le seguenti opzioni:
      • Nessuno schema. Se selezioni questa opzione, Apigee non utilizzerà uno schema per convalidare le richieste.
      • Importa schema GraphQL (.graphql)
    2. Seleziona Importa schema GraphQL (.graphql). Vengono visualizzate le seguenti:

      Scegli un file di schema.
    3. Fai clic su Scegli file e seleziona il file di schema che creati in precedenza (che deve avere l'estensione .graphql). Il file viene visualizzato nel campo Nome schema.

      Schema selezionato.
  7. Fai clic su Aggiungi. Il riquadro Flow: PreFlow viene ora visualizzato come mostrato di seguito:

    Riquadro PreFlow con il criterio GraphQL.

    Consulta la sezione Opzioni grafica di seguito per conoscere le opzioni che puoi impostare. il criterio GraphQL. In questo esempio, lasciali così come sono.

  8. Per eseguire il deployment del proxy, fai clic sulla scheda Panoramica e seleziona Esegui il deployment.

    Riquadro PreFlow con il criterio GraphQL.

Ora puoi testare il criterio GraphQL con il seguente comando curl:

curl --location --request POST 'https://PROXY_BASEPATH/HOST_NAME' --data-raw 'query query_name {allPersons {name}}' -k

Dove PROXY_BASEPATH è il percorso di base del proxy e HOST_NAME è il nome del il proxy, compreso il numero di revisione più recente. Quando il comando, Apigee convalida la richiesta in base allo schema e restituisce quanto segue come output.

{
  "query query_name {allPersons {name}}": "",
  "id": 101
}

Ecco un altro esempio di richiesta:

curl --location --request POST 'https://PROXY_BASEPATH/HOST_NAME' --data-raw 'query ilovegql {DEADBEEF}' -k

Questa volta la convalida della richiesta non va a buon fine e viene visualizzato il seguente messaggio di errore.

{"fault":{"faultstring":"steps.graphQL.SchemaValidationFailed","detail":{"errorcode":"steps.graphQL.SchemaValidationFailed"}}}

Opzioni GraphQL

GraphPolicy offre le seguenti opzioni:

  • OperationType: il tipo di operazione. Le opzioni sono:
    • query: l'equivalente GraphQL dell'operazione REST GET.
    • mutation: l'equivalente GraphQL dell'operazione REST PUT.
    • query_mutation: query e mutation.
  • MaxDepth: la profondità massima della query, se rappresentata come un albero. MaxDepth ti consente di bloccare le query approfondite nel payload, in modo che Apigee non debba creare variabili di flusso molto grandi per contenere i valori. Tuttavia, il payload viene inviato così com'è, indipendentemente dal valore di MaxDepth.
  • MaxCount: il numero massimo di frammenti che possono essere presenti nel payload. Puoi utilizzarlo per impedire che il server di back-end GraphQL del cliente venga eseguito altamente complesse, costringendo i clienti a suddividere la propria logica in payload più piccoli.
  • Action: una delle seguenti azioni GraphQL:
    • parseApigee analizza il payload GraphQL nelle variabili di flusso. Tu potrà quindi utilizzare i contenuti delle variabili di flusso in criteri come JavaCallout. Tieni presente che parse verifica anche il payload.
    • verify: Apigee verifica che il payload GraphQL sia conforme allo schema caricati sul proxy. Puoi utilizzare verify per assicurarti di non ricevere delle richieste non conformi allo schema. Questo può far risparmiare tempo di CPU prezioso nel backend.
    • parse_verify: analizza e verifica il payload.
  • ResourceURL: il percorso del file di schema GraphQL che Apigee utilizza per verificare la richiesta GraphQL."

Per saperne di più su queste opzioni, consulta Riferimento per i criteri GraphQL .