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

Découvrez comment utiliser GraphQL avec des AEM pour diffuser du contenu sans interface 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 commencer à utiliser les requêtes GraphQL et leur utilisation avec les fragments de contenu AEM, vous pouvez 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 à la variable Interface GraphiQL incluse avec l’API GraphQL AEM pour envoyer et tester des requêtes.

Par exemple : http://localhost:4502/content/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

Cet exemple de requête 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 :
Exemple de requête

{
  cityList {
    items
  }
}

Lors de l’exécution, le système développe automatiquement la requête afin d’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

Cet exemple de requête est une requête simple pour renvoyer la variable namede toutes les entrées dans la variable cityschéma.

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

Cet exemple de requête est une requête permettant de renvoyer les détails d’une entrée de fragment unique à 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 variation nommée "Centre de Berlin" (berlin_centre), pour la variable city Berlin, vous pouvez utiliser une requête pour renvoyer les détails de 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és en tant qu’Escapades en ville

Si vous :

  • créer différentes balises, nommées Tourism : Business, City Break, Holiday
  • et attribuer ces balises à la variation de Principal de différentes City instances

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 »

Cet exemple de requête filtre tous les persons pour tous ceux qui portent le nom Jobsou 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 »

Cet exemple de requête filtre tous les persons pour tous ceux qui portent le nom Jobsou 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 d’Allemagne ou de Suisse ayant une population de 400000 à 999999

Ici, une combinaison de champs est filtrée. 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 comporte les éléments suivants :

  • 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

REMARQUE

Comme les résultats peuvent être exhaustifs, 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 les propriétés path et author.

Exemple de requête

{
  articleList {
    items {
      _path
      author
    }
  }
}

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 ;
    • dans ce chemin, tous les formats de contenu :
      • HTML
      • Texte (Markdown)
      • Texte brut
      • JSON

Exemple de requête

{
  articleByPath (_path: "/content/dam/wknd/en/magazine/alaska-adventure/alaskan-adventures") {
    item {
        _path
        author
        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/en/adventures/riverside-camping-australia/riverside-camping-australia") {
    item {
      _path
      adventureTitle
      _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 ;
    • dans ce chemin, le chemin 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

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 fragment à d’autres fragments du type de modèle spécifique Article
REMARQUE

Le champ fragments possède le type de données fragment-reference, avec le modèle Article sélectionné. Requête : 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. Requête : 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 : 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 article avec un chemin spécifique ;
    • dans ce chemin, les données liées à la variation : variation1

Exemple de requête

{
  articleByPath (_path: "/content/dam/wknd/en/magazine/alaska-adventure/alaskan-adventures", variation: "variation1") {
    item {
      _path
      author
      main {
        html
        markdown
        plaintext
        json
      }
    }
  }
}

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 article avec une variation spécifique : variation1

Exemple de requête

{
  articleList (variation: "variation1") {
    items {
      _path
      author
      main {
        html
        markdown
        plaintext
        json
      }
    }
  }
}

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
      author
      main {
        html
        markdown
        plaintext
        json
      }
    }
  }
}

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, utilisez les modèles de contenu suivants et leurs interrelations (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 sur une seule ligne
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 sur une seule ligne
Prénom Texte sur une seule ligne
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 sur une seule ligne
Titre Texte sur une seule ligne

Ville

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

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