Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 .