Partager via


Comment appeler des points d'accès GraphQL

Les points de terminaison GraphQL dans le Générateur d’API de données (DAB) vous permettent d’interroger et de modifier des données avec précision. Chaque requête déclare exactement les champs dont vous avez besoin et prend en charge les arguments pour le filtrage, l’ordre et la pagination des résultats.

Par défaut, DAB héberge son point de terminaison GraphQL sur :

https://{base_url}/graphql

Les entités exposées via la configuration sont automatiquement incluses dans le schéma GraphQL. Par exemple, si vous avez les entités books et authors, les deux apparaissent en tant que champs racines dans le schéma.

Remarque

Utilisez n’importe quel client GraphQL moderne ou IDE (comme Apollo, Insomnie ou VS Code GraphQL) pour explorer les champs de schéma et de saisie semi-automatique.

Mots clés pris en charge dans le générateur d’API de données

Concept GraphQL Objectif
Projection Éléments Choisir les champs à retourner
Filtrage filtre Restreindre les lignes par condition
Tri orderBy Définir l’ordre de tri
Taille de la page first Limiter les éléments par page
Suite après Continuer à partir de la dernière page

Structure de base

Chaque requête GraphQL commence par un champ racine qui représente une entité.

{
  books {
    items {
      id
      title
      price
    }
  }
}

Le résultat est un objet JSON avec la même forme que votre jeu de sélection :

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

Remarque

Par défaut, DAB retourne jusqu’à 100 éléments par requête, sauf configuration contraire (runtime.pagination.default-page-size).

Types de requêtes

Chaque entité prend en charge deux requêtes racines standard :

Query Descriptif
entity_by_pk Retourne un enregistrement par sa clé primaire
entities Retourne une liste d’enregistrements qui correspondent aux filtres

Exemple de retour d’un enregistrement :

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

Exemple renvoyant plusieurs éléments :

{
  books {
    items {
      id
      title
    }
  }
}

Filtrage des résultats

Utilisez l’argument filter pour restreindre les enregistrements retournés.

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

Cette requête retourne tous les livres dont le titre contient « Foundation ».

Les filtres peuvent combiner des comparaisons avec des opérateurs logiques :

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

Consultez la référence d’argument de filtre pour les opérateurs pris en charge tels que eq, neq, lt, lte et isNull.

Tri des résultats

L’argument orderBy définit la façon dont les enregistrements sont triés.

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

Cela classe les livres par year décroissant, puis par title.

Pour plus d’informations, consultez la référence de l’argument orderBy .

Limitation des résultats

L’argument first limite le nombre d’enregistrements retournés dans une seule requête.

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

Cela retourne les cinq premiers livres, classés par clé primaire par défaut. Vous pouvez également utiliser first: -1 pour demander la taille de page maximale configurée.

Apprenez-en davantage dans la première référence d’argument.

Résultats continus

Pour extraire la page suivante, utilisez l’argument after avec le curseur de la requête précédente.

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

Le after jeton marque l’endroit où la page précédente s’est terminée. Pour plus d’informations, consultez après la référence de l'argument .

Sélection de champ (projection)

Dans GraphQL, vous choisissez exactement les champs qui apparaissent dans la réponse. Il n’y a pas de caractère générique comme SELECT *. Demandez uniquement ce dont vous avez besoin.

{
  books {
    items { id title price }
  }
}

Vous pouvez également utiliser des alias pour renommer des champs dans la réponse :

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

Pour plus d’informations, consultez la référence de projection de champ .