Apprendre à utiliser GraphQL avec AEM – Exemple de contenu et de requêtes

Découvrez comment utiliser GraphQL avec AEM pour diffuser du contenu en mode découplé en explorant des exemples de contenu et de requêtes.

REMARQUE

Il est préférable de lire cette page à la lumière des sections suivantes :

Pour prendre en main les requêtes GraphQL et leur fonctionnement avec les fragments de contenu AEM, il peut être utile de consulter quelques exemples pratiques.

Pour obtenir de l’aide à ce sujet, voir les éléments suivants :

GraphQL - Exemples de requêtes utilisant la structure de fragment de contenu type

Consultez ces exemples de requêtes pour obtenir un aperçu de la création de requêtes, ainsi que des exemples de résultats.

REMARQUE

Selon votre instance, vous pouvez accéder directement à l’interface GraphiQL incluse avec l’API GraphQL d’AEM pour soumettre et tester des requêtes.

Vous pouvez accéder à l’éditeur de requêtes à partir de :

  • Outils -> Général -> Éditeur de requêtes GraphQL
  • directement ; par exemple, http://localhost:4502/aem/graphiql.html
REMARQUE

Les exemples de requêtes sont basés sur l’exemple de structure de fragment de contenu à utiliser avec GraphQL

Exemple de requête - Tous les schémas et types de données disponibles

Tous les types seront renvoyés pour tous les schémas disponibles.

Exemple de requête

{
  __schema {
    types {
      name
      description
    }
  }
}

Exemple de résultat

{
  "data": {
    "__schema": {
      "types": [
        {
          "name": "AdventureModel",
          "description": null
        },
        {
          "name": "AdventureModelArrayFilter",
          "description": null
        },
        {
          "name": "AdventureModelFilter",
          "description": null
        },
        {
          "name": "AdventureModelResult",
          "description": null
        },
        {
          "name": "AdventureModelResults",
          "description": null
        },
        {
          "name": "AllFragmentModels",
          "description": null
        },
        {
          "name": "ArchiveRef",
          "description": null
        },
        {
          "name": "ArrayMode",
          "description": null
        },
        {
          "name": "ArticleModel",
          "description": null
        },

...more results...

        {
          "name": "__EnumValue",
          "description": null
        },
        {
          "name": "__Field",
          "description": null
        },
        {
          "name": "__InputValue",
          "description": null
        },
        {
          "name": "__Schema",
          "description": "A GraphQL Introspection defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, the entry points for query, mutation, and subscription operations."
        },
        {
          "name": "__Type",
          "description": null
        },
        {
          "name": "__TypeKind",
          "description": "An enum describing what kind of type a given __Type is"
        }
      ]
    }
  }
}

Exemple de requête - Toutes les informations sur toutes les villes

Pour récupérer toutes les informations sur toutes les villes, vous pouvez utiliser la requête de base :
Exemple de requête

{
  cityList {
    items
  }
}

Une fois l’exécution effectuée, le système développe automatiquement la requête pour inclure tous les champs :

{
  cityList {
    items {
      _path
      name
      country
      population
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityList": {
      "items": [
        {
          "_path": "/content/dam/sample-content-fragments/cities/basel",
          "name": "Basel",
          "country": "Switzerland",
          "population": 172258
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/berlin",
          "name": "Berlin",
          "country": "Germany",
          "population": 3669491
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/bucharest",
          "name": "Bucharest",
          "country": "Romania",
          "population": 1821000
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/san-francisco",
          "name": "San Francisco",
          "country": "USA",
          "population": 883306
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/san-jose",
          "name": "San Jose",
          "country": "USA",
          "population": 1026350
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/stuttgart",
          "name": "Stuttgart",
          "country": "Germany",
          "population": 634830
        },
        {
          "_path": "/content/dam/sample-content-fragments/cities/zurich",
          "name": "Zurich",
          "country": "Switzerland",
          "population": 415367
        }
      ]
    }
  }
}

Exemple de requête - Noms de toutes les villes

Il s’agit d’une requête simple pour renvoyer l’élément namede toutes les entrées dans le schémacity.

Exemple de requête

query {
  cityList {
    items {
      name
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "Basel"
        },
        {
          "name": "Berlin"
        },
        {
          "name": "Bucharest"
        },
        {
          "name": "San Francisco"
        },
        {
          "name": "San Jose"
        },
        {
          "name": "Stuttgart"
        },
        {
          "name": "Zurich"
        }
      ]
    }
  }
}

Exemple de requête – Un fragment de ville unique et spécifique

Il s’agit d’une requête qui renvoie les détails d’une entrée de fragment unique vers un emplacement spécifique dans le référentiel.

Exemple de requête

{
  cityByPath (_path: "/content/dam/sample-content-fragments/cities/berlin") {
    item {
      _path
      name
      country
      population
     categories
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityByPath": {
      "item": {
        "_path": "/content/dam/sample-content-fragments/cities/berlin",
        "name": "Berlin",
        "country": "Germany",
        "population": 3669491,
        "categories": [
          "city:capital",
          "city:emea"
        ]
      }
    }
  }
}

Exemple de requête – Toutes les villes avec une variante nommée

Si vous créez une nouvelle variante, appelée « Centre de Berlin » (berlin_centre), pour Berlin en tant que city, vous pouvez utiliser une requête afin de renvoyer des détails sur la variante.

Exemple de requête

{
  cityList (variation: "berlin_center") {
    items {
      _path
      name
      country
      population
      categories
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityList": {
      "items": [
        {
          "_path": "/content/dam/sample-content-fragments/cities/berlin",
          "name": "Berlin",
          "country": "Germany",
          "population": 3669491,
          "categories": [
            "city:capital",
            "city:emea"
          ]
        }
      ]
    }
  }
}

Exemple de requête - Détails complets relatifs au PDG et aux employés d’une entreprise

Grâce à la structure des fragments imbriqués, cette requête renvoie tous les détails relatifs au PDG d’une entreprise et à tous ses employés.

Exemple de requête

query {
  companyList {
    items {
      name
      ceo {
        _path
        name
        firstName
        awards {
        id
          title
        }
      }
      employees {
       name
        firstName
       awards {
         id
          title
        }
      }
    }
  }
}

Exemples de résultats

{
  "data": {
    "companyList": {
      "items": [
        {
          "name": "Apple Inc.",
          "ceo": {
            "_path": "/content/dam/sample-content-fragments/persons/steve-jobs",
            "name": "Jobs",
            "firstName": "Steve",
            "awards": []
          },
          "employees": [
            {
              "name": "Marsh",
              "firstName": "Duke",
              "awards": []
            },
            {
              "name": "Caulfield",
              "firstName": "Max",
              "awards": [
                {
                  "id": "GB",
                  "title": "Gameblitz"
                }
              ]
            }
          ]
        },
        {
          "name": "Little Pony, Inc.",
          "ceo": {
            "_path": "/content/dam/sample-content-fragments/persons/adam-smith",
            "name": "Smith",
            "firstName": "Adam",
            "awards": []
          },
          "employees": [
            {
              "name": "Croft",
              "firstName": "Lara",
              "awards": [
                {
                  "id": "GS",
                  "title": "Gamestar"
                }
              ]
            },
            {
              "name": "Slade",
              "firstName": "Cutter",
              "awards": [
                {
                  "id": "GB",
                  "title": "Gameblitz"
                },
                {
                  "id": "GS",
                  "title": "Gamestar"
                }
              ]
            }
          ]
        },
        {
          "name": "NextStep Inc.",
          "ceo": {
            "_path": "/content/dam/sample-content-fragments/persons/steve-jobs",
            "name": "Jobs",
            "firstName": "Steve",
            "awards": []
          },
          "employees": [
            {
              "name": "Smith",
              "firstName": "Joe",
              "awards": []
            },
            {
              "name": "Lincoln",
              "firstName": "Abraham",
              "awards": []
            }
          ]
        }
      ]
    }
  }
}

Exemple de Requête - Toutes les personnes qui portent le nom « Jobs » ou « Smith »

Elle filtre toutes les persons qui portent le nom Jobs ou Smith.

Exemple de requête

query {
  personList(filter: {
    name: {
      _logOp: OR
      _expressions: [
        {
          value: "Jobs"
        },
        {
          value: "Smith"
        }
      ]
    }
  }) {
    items {
      name
      firstName
    }
  }
}

Exemples de résultats

{
  "data": {
    "personList": {
      "items": [
        {
          "name": "Smith",
          "firstName": "Adam"
        },
        {
          "name": "Smith",
          "firstName": "Joe"
        },
        {
          "name": "Jobs",
          "firstName": "Steve"
        }
      ]
    }
  }
}

Exemple de requête - Toutes les personnes qui ne portent pas le nom « Jobs »

Elle filtre toutes les persons qui portent le nom Jobs ou Smith.

Exemple de requête

query {
  personList(filter: {
    name: {
      _expressions: [
        {
          value: "Jobs"
          _operator: EQUALS_NOT
        }
      ]
    }
  }) {
    items {
      name
      firstName
    }
  }
}

Exemples de résultats

{
  "data": {
    "personList": {
      "items": [
        {
          "name": "Lincoln",
          "firstName": "Abraham"
        },
        {
          "name": "Smith",
          "firstName": "Adam"
        },
        {
          "name": "Slade",
          "firstName": "Cutter"
        },
        {
          "name": "Marsh",
          "firstName": "Duke"
        },
        {
          "name": "Smith",
          "firstName": "Joe"
        },
        {
          "name": "Croft",
          "firstName": "Lara"
        },
        {
          "name": "Caulfield",
          "firstName": "Max"
        }
      ]
    }
  }
}

Exemple de requête - Toutes les aventures dont _path commence par un préfixe spécifique

Toutes les adventures_path commence par un préfixe spécifique (/content/dam/wknd/en/adventures/cycling).

Exemple de requête

query {
  adventureList(
    filter: {
      _path: {
        _expressions: [
        {
          value: "/content/dam/wknd/en/adventures/cycling"
         _operator: STARTS_WITH
        }]
       }
    })
    {
    items {
      _path
    }
  }
}

Exemples de résultats

{
  "data": {
    "adventureList": {
      "items": [
        {
          "_path": "/content/dam/wknd/en/adventures/cycling-southern-utah/cycling-southern-utah"
        },
        {
          "_path": "/content/dam/wknd/en/adventures/cycling-tuscany/cycling-tuscany"
        }
      ]
    }
  }
}

Exemple de requête - Toutes les villes situées en Allemagne ou en Suisse et dont la population se situe entre 400 000 et 999 999

Ici, le filtrage concerne une combinaison de champs. Un opérateur AND (implicite) est utilisé pour sélectionner la plage population, tandis qu’un opérateur OR (explicite) est utilisé pour sélectionner les villes requises.

Exemple de requête

query {
  cityList(filter: {
    population: {
      _expressions: [
        {
          value: 400000
          _operator: GREATER_EQUAL
        }, {
          value: 1000000
          _operator: LOWER
        }
      ]
    },
    country: {
      _logOp: OR
      _expressions: [
        {
          value: "Germany"
        }, {
          value: "Switzerland"
        }
      ]
    }
  }) {
    items {
      name
      population
      country
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "Stuttgart",
          "population": 634830,
          "country": "Germany"
        },
        {
          "name": "Zurich",
          "population": 415367,
          "country": "Switzerland"
        }
      ]
    }
  }
}

Exemple de requête - Toutes les villes dont le nom contient SAN, indépendamment de la casse

Cette requête interroge toutes les villes dont le nom contient SAN, indépendamment de la casse.

Exemple de requête

query {
  cityList(filter: {
    name: {
      _expressions: [
        {
          value: "SAN"
          _operator: CONTAINS
          _ignoreCase: true
        }
      ]
    }
  }) {
    items {
      name
      population
      country
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "San Francisco",
          "population": 883306,
          "country": "USA"
        },
        {
          "name": "San Jose",
          "population": 1026350,
          "country": "USA"
        }
      ]
    }
  }
}

Exemple de requête - Filtrage sur un tableau avec un élément qui doit apparaître au moins une fois

Cette requête effectue un filtrage sur un tableau avec un élément (city:na) qui doit se produire au moins une fois.

Exemple de requête

query {
  cityList(filter: {
    categories: {
      _expressions: [
        {
          value: "city:na"
          _apply: AT_LEAST_ONCE
        }
      ]
    }
  }) {
    items {
      name
      population
      country
      categories
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "San Francisco",
          "population": 883306,
          "country": "USA",
          "categories": [
            "city:beach",
            "city:na"
          ]
        },
        {
          "name": "San Jose",
          "population": 1026350,
          "country": "USA",
          "categories": [
            "city:na"
          ]
        }
      ]
    }
  }
}

Exemple de requête - Filtrage sur une valeur de tableau exacte

Cette requête effectue un filtrage sur une valeur de tableau exacte.

Exemple de requête

query {
  cityList(filter: {
    categories: {
      _expressions: [
        {
          values: [
            "city:beach",
            "city:na"
          ]
        }
      ]
    }
  }) {
    items {
      name
      population
      country
      categories
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "San Francisco",
          "population": 883306,
          "country": "USA",
          "categories": [
            "city:beach",
            "city:na"
          ]
        }
      ]
    }
  }
}

Exemple de requête pour les fragments de contenu imbriqués - Toutes les entreprises dont au moins un employé porte le nom « Smith »

Cette requête illustre le filtrage pour toute person portant le name « Smith », qui renvoie des informations provenant de deux fragments imbriqués – company et employee.

Exemple de requête

query {
  companyList(filter: {
    employees: {
      _match: {
        name: {
          _expressions: [
            {
              value: "Smith"
            }
          ]
        }
      }
    }
  }) {
    items {
      name
      ceo {
        name
        firstName
      }
      employees {
        name
        firstName
      }
    }
  }
}

Exemples de résultats

{
  "data": {
    "companyList": {
      "items": [
        {
          "name": "NextStep Inc.",
          "ceo": {
            "name": "Jobs",
            "firstName": "Steve"
          },
          "employees": [
            {
              "name": "Smith",
              "firstName": "Joe"
            },
            {
              "name": "Lincoln",
              "firstName": "Abraham"
            }
          ]
        }
      ]
    }
  }
}

Exemple de requête pour les fragments de contenu imbriqués - Toutes les entreprises dont tous les employés ont remporté le prix « Gamestar »

Cette requête illustre le filtrage de trois fragments imbriqués : company, employee et award.

Exemple de requête

query {
  companyList(filter: {
    employees: {
      _apply: ALL
      _match: {
        awards: {
          _match: {
            id: {
              _expressions: [
                {
                  value: "GS"
                  _operator:EQUALS
                }
              ]
            }
          }
        }
      }
    }
  }) {
    items {
      name
      ceo {
        name
        firstName
      }
      employees {
        name
        firstName
        awards {
          id
          title
        }
      }
    }
  }
}

Exemples de résultats

{
  "data": {
    "companyList": {
      "items": [
        {
          "name": "Little Pony, Inc.",
          "ceo": {
            "name": "Smith",
            "firstName": "Adam"
          },
          "employees": [
            {
              "name": "Croft",
              "firstName": "Lara",
              "awards": [
                {
                  "id": "GS",
                  "title": "Gamestar"
                }
              ]
            },
            {
              "name": "Slade",
              "firstName": "Cutter",
              "awards": [
                {
                  "id": "GB",
                  "title": "Gameblitz"
                },
                {
                  "id": "GS",
                  "title": "Gamestar"
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Exemple de requête pour les métadonnées – Liste des métadonnées des prix intitulés GB

Cette requête illustre le filtrage de trois fragments imbriqués : company, employee et award.

Exemple de requête

query {
  awardList(filter: {
      id: {
        _expressions: [
          {
            value:"GB"
          }
        ]
    }
  }) {
    items {
      _metadata {
        stringMetadata {
          name,
          value
        }
      }
      id
      title
    }
  }
}

Exemples de résultats

{
  "data": {
    "awardList": {
      "items": [
        {
          "_metadata": {
            "stringMetadata": [
              {
                "name": "title",
                "value": "Gameblitz Award"
              },
              {
                "name": "description",
                "value": ""
              }
            ]
          },
          "id": "GB",
          "title": "Gameblitz"
        }
      ]
    }
  }
}

Exemples de requêtes utilisant le projet WKND

Ces exemples de requêtes sont basés sur le projet WKND. Il s’agit des éléments suivants :

  • Modèles de fragments de contenu disponibles sous :
    http://<hostname>:<port>/libs/dam/cfm/models/console/content/models.html/conf/wknd

  • Fragments de contenu (et autres contenus) disponibles sous :
    http://<hostname>:<port>/assets.html/content/dam/wknd/en

    http://<hostname>:<port>/assets.html/content/dam/wknd-shared/en

REMARQUE

Les résultats pouvant être volumineux, ils ne sont pas reproduits ici.

Exemple de requête pour tous les fragments de contenu d’un modèle donné avec les propriétés spécifiées

Cet exemple de requête interroge :

  • à la recherche de tous les fragments de contenu de type article ;
  • avec le _path et les propriétés du authorFragment.

Exemple de requête

{
  articleList {
    items {
      _path
      authorFragment {
        _path
        firstName
        lastName
        birthDay
      }
    }
 }
}

Exemple de requête de métadonnées

Cette requête interroge :

  • à la recherche de tous les fragments de contenu de type adventure ;
  • metadata

Exemple de requête

{
  adventureList {
    items {
      _path,
      _metadata {
        stringMetadata {
          name,
          value
        }
        stringArrayMetadata {
          name,
          value
        }
        intMetadata {
          name,
          value
        }
        intArrayMetadata {
          name,
          value
        }
        floatMetadata {
          name,
          value
        }
        floatArrayMetadata {
          name,
          value
        }
        booleanMetadata {
          name,
          value
        }
        booleanArrayMetadata {
          name,
          value
        }
        calendarMetadata {
          name,
          value
        }
        calendarArrayMetadata {
          name,
          value
        }
      }
    }
  }
}

Exemple de requête pour un fragment de contenu unique d’un modèle donné

Cet exemple de requête interroge :

  • à la recherche d’un fragment de contenu unique de type article avec un chemin spécifique ;
    • parmi cela, tous les formats de contenu :
      • HTML
      • Texte (Markdown)
      • Texte brut
      • JSON

Exemple de requête

{
  articleByPath(_path: "/content/dam/wknd-shared/en/magazine/alaska-adventure/alaskan-adventures") {
    item {
        _path
        authorFragment {
          _path
          firstName
          lastName
          birthDay
        }
        main {
          html
          markdown
          plaintext
          json
        }
    }
  }
}

Exemple de requête pour un modèle de fragment de contenu à partir d’un modèle

Cet exemple de requête interroge :

  • à la recherche d’un seul fragment de contenu ;
    • les détails du modèle de fragment de contenu sous-jacent.

Exemple de requête

{
  adventureByPath(_path: "/content/dam/wknd-shared/en/magazine/western-australia/western-australia-by-camper-van") {
    item {
      _path
      title
      _model {
        _path
        title
      }
    }
  }
}

Exemple de requête pour un fragment de contenu imbriqué - Type de modèle unique

Cette requête interroge :

  • à la recherche d’un fragment de contenu unique de type article avec un chemin spécifique ;
    • parmi cela, le chemin d’accès et l’auteur du fragment référencé (imbriqué).
REMARQUE

Le champ referencearticle a le type de données fragment-reference.

Exemple de requête

{
  adventureByPath(_path: "/content/dam/wknd-shared/en/magazine/western-australia/western-australia-by-camper-van") {
    item {
      _path
      title
      _model {
        _path
        title
      }
    }
  }
}

Exemple de requête pour un fragment de contenu imbriqué - Type de modèle multiple

Cette requête interroge :

  • à la recherche de différents fragments de contenu de type bookmark ;
    • avec des références de fragments à d’autres fragments de types de modèles spécifiques article et adventure.
REMARQUE

Le champ fragments présente le type de données fragment-reference, avec les modèles Article, Adventure sélectionnés.

{
  bookmarkList {
    items {
        fragments {
          ... on ArticleModel {
            _path
            author
          }
          ... on AdventureModel {
            _path
            adventureTitle
          }
        }
     }
  }
}

Exemple de requête pour un fragment de contenu d’un modèle spécifique avec des références de contenu

Cette requête possède deux versions :

  1. Pour renvoyer toutes les références au contenu.
  2. Pour renvoyer les références de contenu spécifiques de type attachments

Ces requêtes interrogent :

  • à la recherche de différents fragments de contenu de type bookmark ;
    • avec des références de contenu à d’autres fragments.

Exemple de requête pour plusieurs fragments de contenu avec des références prérécupérées

La requête suivante renvoie toutes les références de contenu en utilisant _references :

{
  bookmarkList {
     _references {
         ... on ImageRef {
          _path
          type
          height
        }
        ... on MultimediaRef {
          _path
          type
          size
        }
        ... on DocumentRef {
          _path
          type
          author
        }
        ... on ArchiveRef {
          _path
          type
          format
        }
    }
    items {
        _path
    }
  }
}

Exemple de requête pour plusieurs fragments de contenu avec pièces jointes

La requête suivante renvoie tous les attachments – un champ spécifique (sous-groupe) de type content-reference :

REMARQUE

Le champ attachments présente le type de données content-reference, avec différents formulaires sélectionnés.

{
  bookmarkList {
    items {
      attachments {
        ... on PageRef {
          _path
          type
        }
        ... on ImageRef {
          _path
          width
        }
        ... on MultimediaRef {
          _path
          size
        }
        ... on DocumentRef {
          _path
          author
        }
        ... on ArchiveRef {
          _path
          format
        }
      }
    }
  }
}

Exemple de requête pour un fragment de contenu unique avec référence en ligne RTE

Cette requête interroge :

  • à la recherche d’un fragment de contenu unique de type bookmark avec un chemin spécifique ;
    • à l’intérieur de cela, les références intégrées RTE.
REMARQUE

Les références en ligne RTE sont alimentées dans _references.

Exemple de requête

{
  bookmarkByPath(_path: "/content/dam/wknd/en/bookmarks/skitouring") {
    item {
      _path
      description {
        json
      }
    }
    _references {
      ... on ArticleModel {
        _path
      }
      ... on AdventureModel {
        _path
      }
      ... on ImageRef {
        _path
      }
      ... on MultimediaRef {
        _path
      }
      ... on DocumentRef {
        _path
      }
      ... on ArchiveRef {
        _path
      }
    }
  }
}

Exemple de requête pour une variation de fragment de contenu unique d’un modèle donné

Cette requête interroge :

  • à la recherche d’un fragment de contenu unique de type author avec un chemin spécifique ;
    • à l’intérieur de cela, les données sont liées à la variation : another.

Exemple de requête

{
  authorByPath(_path: "/content/dam/wknd-shared/en/contributors/ian-provo", variation: "another") {
    item {
        _path
        _variation
        firstName
        lastName
        birthDay
    }
  }
}

Exemple de requête pour une variante nommée de plusieurs fragments de contenu d’un modèle donné

Cette requête interroge :

  • à la recherche de fragments de contenu de type author avec une variation spécifique : another
REMARQUE

Cela permet d’afficher la version de secours pour les fragments de contenu qui n’ont pas de Variation du nom spécifié.

Exemple de requête

{
  authorList(variation: "another") {
    items {
        _path
        _variation
        firstName
        lastName
        birthDay
    }
  }
}

Exemple de requête pour plusieurs fragments de contenu d’un paramètre régional donné

Cette requête interroge :

  • à la recherche de fragments de contenu de type article dans le paramètre régional fr

Exemple de requête

{
  articleList(_locale: "fr") {
    items {
      _path
      authorFragment {
        _path
        firstName
        lastName
        birthDay
      }
      main {
        html
        markdown
        plaintext
        json
      }
    }
  }
}

Exemple de requête de liste utilisant offset et limit

Cette requête interroge :

  • pour la page de résultats contenant jusqu’à cinq articles, en commençant par le cinquième article de la liste de résultats complète.

Exemple de requête

{
   articleList(offset: 5, limit: 5) {
    items {
      authorFragment {
        _path
        firstName
        lastName
        birthDay
      }
      _path
    }
  }
}

Exemple de requête de pagination utilisant first et after

Cette requête interroge :

  • pour la page de résultats contenant jusqu’à cinq aventures, en commençant par l’élément de curseur donné de la liste de résultats complète.

Exemple de requête

{
    adventurePaginated(first: 5, after: "ODg1MmMyMmEtZTAzMy00MTNjLThiMzMtZGQyMzY5ZTNjN2M1") {
        edges {
          cursor
          node {
            title
          }
        }
        pageInfo {
          endCursor
          hasNextPage
        }
    }
}

Exemple de structure de fragment de contenu (utilisée avec GraphQL)

Les exemples de requêtes sont basés sur la structure suivante, qui utilise :

Exemples de modèles de fragments de contenu (schémas)

Pour les exemples de requêtes, nous utiliserons les modèles de contenu suivants et leurs relations mutuelles (références ->) :

Entreprise

Les champs de base définissant l’entreprise sont les suivants :

Nom du champ Type de données Référence
Nom de l’entreprise Une seule ligne de texte
PDG Référence du fragment (unique) Personne
Employés Référence du fragment (champ multiple) Personne

Personne

Champs définissant une personne, qui peut également être un employé :

Nom du champ Type de données Référence
Nom Une seule ligne de texte
Prénom Une seule ligne de texte
Distinctions Référence du fragment (champ multiple) Distinction

Distinction

Les champs définissant une distinction sont les suivants :

Nom du champ Type de données Référence
Raccourci/ID Une seule ligne de texte
Titre Une seule ligne de texte

Ville

Les champs permettant de définir une ville sont les suivants :

Nom du champ Type de données Référence
Nom Une seule ligne de texte
Pays Une seule ligne de texte
Population Nombre
Catégories Balises

Exemples de fragments de contenu

Les fragments suivants sont utilisés pour le modèle approprié.

Entreprise

Nom de l’entreprise PDG Employés
Apple Steve Jobs Duke Marsh
Max Caulfield
Little Pony Inc. Adam Smith Lara Croft
Cutter Slade
NextStep Inc. Steve Jobs Joe Smith
Abe Lincoln

Personne

Nom Prénom Distinctions
Lincoln Abe
Smith Adam
Slade Cutter Gameblitz
Gamestar
Marsh Duke
Smith Joe
Croft Lara Gamestar
Caulfield Max Gameblitz
Jobs Steve

Distinction

Raccourci/ID Titre
GB Gameblitz
GS Gamestar
OSC Oscar

Ville

Nom Pays Population Catégories
Bâle Suisse 172258 city:emea
Berlin Allemagne 3669491 city:capital
city:emea
Bucarest Roumanie 1821000 city:capital
city:emea
San Francisco États-Unis 883306 city:beach
city:na
San Jose États-Unis 102635 city:na
Stuttgart Allemagne 634830 city:emea
Zurich Suisse 415367 city:capital
city:emea

Sur cette page