Condividi tramite


Come chiamare gli endpoint GraphQL

Gli endpoint GraphQL in Data API Builder (DAB) consentono di eseguire query e modificare i dati con precisione. Ogni query dichiara esattamente quali campi sono necessari e supporta gli argomenti per filtrare, ordinare e la paginazione dei risultati.

Per impostazione predefinita, DAB ospita l'endpoint GraphQL in:

https://{base_url}/graphql

Le entità esposte tramite la configurazione vengono incluse automaticamente nello schema GraphQL. Ad esempio, se si dispone delle entità books e authors, entrambe vengono visualizzate come campi radice nello schema.

Annotazioni

Usare qualsiasi client GraphQL moderno o IDE (ad esempio Apollo, Insonnia o VS Code GraphQL) per esplorare i campi dello schema e del completamento automatico.

Parole chiave supportate in Generatore API dati

Concetto GraphQL Scopo
Projection Elementi Scegliere i campi da restituire
Filtraggio filtro Limitare le righe per condizione
Ordinamento orderBy Definire l'ordinamento
Dimensioni pagina primo Limitare gli elementi per pagina
Continuazione dopo Continua dall'ultima pagina

Struttura di base

Ogni query GraphQL inizia con un campo radice che rappresenta un'entità.

{
  books {
    items {
      id
      title
      price
    }
  }
}

Il risultato è un oggetto JSON con la stessa forma del set di selezione:

{
  "data": {
    "books": {
      "items": [
        { "id": 1, "title": "Dune", "price": 20 },
        { "id": 2, "title": "Foundation", "price": 18 }
      ]
    }
  }
}

Annotazioni

Per impostazione predefinita, DAB restituisce fino a 100 elementi per ogni query, a meno che non sia configurato diversamente (runtime.pagination.default-page-size).

Tipi di query

Ogni entità supporta due query radice standard:

Query Descrizione
entity_by_pk Restituisce un record in base alla chiave primaria
entities Restituisce un elenco di record che corrispondono ai filtri

Esempio che restituisce un record:

{
  book_by_pk(id: 1010) {
    title
    year
  }
}

Esempio che restituisce un insieme di risultati:

{
  books {
    items {
      id
      title
    }
  }
}

Filtro dei risultati

Utilizzare l'argomento filter per limitare i record restituiti.

{
  books(filter: { title: { contains: "Foundation" } }) {
    items { id title }
  }
}

Questa query restituisce tutti i libri il cui titolo contiene "Foundation".

I filtri possono combinare confronti con operatori logici:

{
  authors(filter: {
    or: [
      { first_name: { eq: "Isaac" } }
      { last_name: { eq: "Asimov" } }
    ]
  }) {
    items { first_name last_name }
  }
}

Vedere il riferimento all'argomento di filtro per gli operatori supportati, ad esempio eq, neqlt, lte, e isNull.

Ordinamento dei risultati

L'argomento orderBy definisce la modalità di ordinamento dei record.

{
  books(orderBy: { year: DESC, title: ASC }) {
    items { id title year }
  }
}

In questo modo vengono restituiti i libri ordinati in year ordine decrescente, quindi in base a title.

Per altri dettagli, vedere le informazioni di riferimento sull'argomento orderBy .

Limitazione dei risultati

L'argomento first limita il numero di record restituiti in una singola richiesta.

{
  books(first: 5) {
    items { id title }
  }
}

Restituisce i primi cinque libri, ordinati per chiave primaria per impostazione predefinita. È anche possibile usare first: -1 per richiedere le dimensioni massime della pagina configurate.

Altre informazioni sono disponibili nel primo riferimento all'argomento.

Risultati continui

Per ottenere la pagina successiva, utilizzare il parametro after con il cursore della query precedente.

{
  books(first: 5, after: "eyJpZCI6NX0=") {
    items { id title }
  }
}

Il after token contrassegna dove è terminata la pagina precedente. Per ulteriori dettagli, vedere alla sezione riferimenti sugli argomenti.

Selezione dei campi (proiezione)

In GraphQL scegliere esattamente i campi visualizzati nella risposta. Non esiste alcun carattere jolly come SELECT *. Richiedere solo ciò di cui hai bisogno.

{
  books {
    items { id title price }
  }
}

È anche possibile usare alias per rinominare i campi nella risposta:

{
  books {
    items {
      bookTitle: title
      cost: price
    }
  }
}

Per informazioni dettagliate, vedere le informazioni di riferimento sulla proiezione dei campi .