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

Dernière mise à jour : 2023-12-05

Apprenez à utiliser GraphQL avec AEM pour pourvoir diffuser du contenu en mode découplé en explorant des exemples de contenu et de requêtes.

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 dans 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

Renvoie tous les types 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 suivante :
Exemple de requête

{
  cityList {
    items
  }
}

À l’exécution, 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

Requête simple pour renvoyer le name de toutes les entrées dans le schéma city.

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

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 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 variation.

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 : noms de toutes les villes balisées en tant que coupures municipales

Si vous :

  • créez différentes balises, nommées Tourism : Business, City Break, Holiday
  • et que vous les affectez à la variation principale de diverses instances City,

vous pouvez alors utiliser une requête pour renvoyer les détails de name et de tags de toutes les entrées balisées comme des Escapades en ville dans le schéma city.

Exemple de requête

query {
  cityList(
    includeVariations: true,
    filter: {_tags: {_expressions: [{value: "tourism:city-break", _operator: CONTAINS}]}}
  ){
    items {
      name,
      _tags
    }
  }
}

Exemples de résultats

{
  "data": {
    "cityList": {
      "items": [
        {
          "name": "Berlin",
          "_tags": [
            "tourism:city-break",
            "tourism:business"
          ]
        },
        {
          "name": "Zurich",
          "_tags": [
            "tourism:city-break",
            "tourism:business"
          ]
        }
      ]
    }
  }
}

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 »

Une requête qui 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 »

Une requête qui 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 possède les caractéristiques suivantes :

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

  • les 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 ;
    • à l’intérieur de ce fragment, 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 ;
    • à l’intérieur de ce fragment, le chemin d’accès et l’auteur ou autrice 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

Type de modèle référencé unique

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 du type de modèle spécifique Article.
REMARQUE

Le champ fragments présente le type de données fragment-reference, avec le modèle Article sélectionné. La requête renvoie fragments sous la forme d’un tableau de [Article].

{
  bookmarkList {
    items {
        fragments {
          _path
          author
        }
     }
  }
}

Types de modèle référencés multiples

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. La requête renvoie fragments sous la forme d’un tableau de [AllFragmentModels], qui est déréférencé avec le type d’union.

{
  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 toutes 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 ce fragment, 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

Cette requête 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 et leurs variations dans un modèle donné

Cette requête interroge :

  • les fragments de contenu de type article et toutes les variations.

Exemple de requête

query {
  articleList(
    includeVariations: true  ){
    items {
      _variation
      _path
      _tags
      _metadata {
        stringArrayMetadata {
          name
          value
        }
      }
    }
  }
}

Exemple de requête pour les variations de fragments de contenu dans un modèle donné auxquelles est associée une balise spécifique.

Cette requête interroge :

  • les fragments de contenu de type article avec une ou plusieurs variations comportant la balise WKND : Activity / Hiking.

Exemple de requête

{
  articleList(
    includeVariations: true,
    filter: {_tags: {_expressions: [{value: "wknd:activity/hiking", _operator: CONTAINS}]}}
  ){
    items {
      _variation
      _path
      _tags
      _metadata {
        stringArrayMetadata {
          name
          value
        }
      }
    }
  }
}

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 requête avec filtrage par identifiant _tags et excluant des variations

Cette requête interroge :

  • pour les fragments de contenu de type vehicle comportant la balise big-block
  • excluant des variations

Exemple de requête

query {
  vehicleList(
    filter: {
    _tags: {
      _expressions: [
        {
          value: "vehicles:big-block"
          _operator: CONTAINS
        }
      ]
    }
  }) {
    items {
      _variation
      _path
      type
      name
      model
      fuel
      _tags
    }
  }
}

Exemple de requête avec filtrage par identifiant _tags et incluant des variations

Cette requête interroge :

  • pour les fragments de contenu de type vehicle comportant la balise big-block
  • incluant des variations

Exemple de requête

{
  enginePaginated(after: "SjkKNmVkODFmMGQtNTQyYy00NmQ4LTljMzktMjhlNzQwZTY1YWI2Cmo5", first: 9 ,includeVariations:true, sort: "name",
    filter: {
    _tags: {
      _expressions: [
        {
          value: "vehicles:big-block"
          _operator: CONTAINS
        }
      ]
    }
  }) {
    edges{
    node {
        _variation
        _path
        name
        type
        size
        _tags
        _metadata {
          stringArrayMetadata {
            name
            value
          }
        }
    }
      cursor
    }
  }
}

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 Texte monoligne
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 Texte monoligne
Prénom Texte monoligne
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 Texte monoligne
Titre Texte monoligne

Ville

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

Nom du champ Type de données Référence
Nom Texte monoligne
Pays Texte monoligne
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