Accès à votre contenu grâce aux API de diffusion AEM

Dans cette partie du Parcours de développement découplé AEM, vous pouvez apprendre à utiliser les requêtes GraphQL pour accéder au contenu de vos fragments de contenu et le transmettre à votre application (diffusion découplée).

Un peu d’histoire…

Dans le document précédent du parcours découplé AEM, Comment modéliser votre contenu, vous avez appris les principes de base de la modélisation de contenu dans AEM. Vous devez donc maintenant comprendre comment modéliser votre structure de contenu, puis réaliser cette structure à l’aide des modèles de fragment de contenu et des fragments de contenu AEM :

  • Reconnaître les concepts et la terminologie liés à la modélisation de contenu
  • Comprendre pourquoi la modélisation de contenu est nécessaire pour la diffusion de contenu découplé
  • Comprendre comment réaliser cette structure à l’aide des modèles de fragment de contenu AEM (et comment créer du contenu avec des fragments de contenu)
  • Comprendre comment modéliser votre contenu, les principes comme les exemples de base

Cet article s’appuie sur ces principes de base afin que vous compreniez comment accéder à votre contenu découplé existant dans AEM en utilisant l’API AEM GraphQL.

  • Public : débutant
  • Objectif : apprendre comment accéder au contenu de vos fragments de contenu à l’aide des requêtes GraphQL d’AEM :
    • Présentation de GraphQL et de l’API AEM GraphQL.
    • Découvrir les détails de l’API AEM GraphQL.
    • Regardez quelques exemples de requêtes pour voir comment les choses fonctionnent dans la pratique.

Vous souhaitez accéder à votre contenu ?

Enfin… Vous disposez de tout ce contenu, soigneusement structuré (dans les fragments de contenu) et vous avez hâte d’en nourrir votre nouvelle application. La question est : comment faire ?

Vous avez besoin d’un moyen de cibler un contenu spécifique, de sélectionner ce dont vous avez besoin et de le renvoyer à votre application pour un traitement ultérieur.

Avec Adobe Experience Manager (AEM) as a Cloud Service, vous pouvez accéder de manière sélective à vos fragments de contenu, à l’aide de l’API AEM GraphQL, pour renvoyer uniquement le contenu dont vous avez besoin. Cela signifie que vous pouvez réaliser une diffusion découplée d’un contenu structuré pour l’utiliser dans vos applications.

REMARQUE

L’API AEM GraphQL est une mise en œuvre personnalisée, basée sur la spécification de l’API GraphQL standard.

GraphQL – Introduction

GraphQL est une spécification open source qui fournit les éléments suivants :

  • un langage de requête qui permet de sélectionner du contenu spécifique à partir d’objets structurés
  • une exécution permettant de répondre à ces requêtes avec votre contenu structuré

GraphQL est une API fortement typée. Cela signifie que tout le contenu doit être clairement structuré et organisé par type, de sorte que GraphQL comprenne ce à quoi accéder et comment. Les champs de données sont définis dans les schémas GraphQL qui définissent ainsi la structure de vos objets de contenu.

Les points d’entrée GraphQL fournissent ensuite les chemins qui répondent aux requêtes GraphQL.

Cela signifie que votre application peut sélectionner précisément, de manière fiable et efficace le contenu dont elle a besoin, ce qui est exactement ce dont vous avez besoin lorsqu’elle est utilisée avec AEM.

REMARQUE

Consultez GraphQL.org et GraphQL.com.

API AEM GraphQL

L’API AEM GraphQL est une version personnalisée de la spécification standard de l’API GraphQL, spécialement configurée pour vous permettre d’exécuter des requêtes (complexes) sur vos fragments de contenu.

Les fragments de contenu sont utilisés, car le contenu est structuré selon des modèles de ce type de fragment. Elle répond ainsi à une des exigences de base de GraphQL.

  • Un modèle de fragment de contenu est constitué d’un ou de plusieurs champs.
    • Chaque champ est défini sur un type de données.
  • Les modèles de fragment de contenu sont utilisés pour générer les schémas GraphQL AEM correspondants.

Pour vraiment accéder à GraphQL pour AEM (et à son contenu), un point d’entrée est utilisé pour fournir le chemin d’accès.

Le contenu renvoyé, à l’aide de l’API AEM GraphQL, peut ensuite être utilisé par vos applications.

Pour vous aider à saisir et à tester directement des requêtes, une implémentation de l’interface GraphiQL standard est également disponible avec GraphQL AEM (qui peut être installée avec AEM). Elle vous offre des fonctionnalités telles que la mise en surbrillance de la syntaxe, la saisie semi-automatique et la suggestion automatique, ainsi qu’un historique et une documentation en ligne.

REMARQUE

L’implémentation de l’API AEM GraphQL repose sur les bibliothèques Java GraphQL.

Fragments de contenu à utiliser avec l’API AEM GraphQL

Les fragments de contenu peuvent servir de base à GraphQL pour les schémas et requêtes AEM car :

  • ils vous permettent de concevoir, créer, organiser et publier du contenu indépendant des pages, qui peut être diffusé en toute sécurité ;
  • ils sont basés sur un modèle de fragment de contenu, qui prédéfinit la structure du fragment résultant à l’aide d’une sélection de types de données ;
  • d’autres couches de structure peuvent être obtenues avec le type de données Référence de fragment, disponible lors de la définition d’un modèle.

Modèles de fragment de contenu

Ces modèles de fragment de contenu :

  • Sont utilisés pour générer les Schémas, une fois Activés.
  • fournissent les types de données et les champs requis pour GraphQL ; garantissent que votre application ne demande que ce qui est possible et reçoive ce qui est attendu.
  • Le type de données Références de fragments peut être utilisé dans votre modèle pour faire référence à un autre fragment de contenu et introduit ainsi des niveaux de structure supplémentaires.

Références à un fragment

La référence à un fragment :

  • est un type de données spécifique disponible lors de la définition d’un modèle de fragment de contenu ;

  • fait référence à un autre fragment, en fonction d’un modèle de fragment de contenu spécifique ;

  • permet de créer, puis de récupérer, des données structurées.

    • Lorsqu’elle est définie comme référence à sources multiples, plusieurs sous-fragments peuvent être référencés (récupérés) par le fragment principal.

Prévisualisation JSON

Pour faciliter la conception et le développement de vos modèles de fragments de contenu, vous pouvez prévisualiser la sortie JSON dans l’éditeur de fragments de contenu.

Aperçu JSON

Utilisation concrète de l’API AEM GraphQL

Configuration initiale

Avant de commencer à lancer des requêtes sur votre contenu, suivez les étapes suivantes :

Exemple de structure

Pour utiliser l’API AEM GraphQL dans une requête, nous pouvons utiliser les deux structures de modèle de fragment de contenu très basiques :

  • Société
    • Nom – Texte
    • PDG (Personne) – Référence du fragment
    • Employés (personnes) – Références du fragment
  • Personne
    • Nom – Texte
    • Prénom – Texte

Comme vous pouvez le voir, les champs PDG et Employés font référence aux fragments de personne.

Les modèles de fragment seront utilisés :

  • lors de la création du contenu dans l’éditeur de fragment de contenu ;
  • pour générer les schémas GraphQL que vous interrogerez.

Où tester vos requêtes

Les requêtes peuvent être entrées dans l’interface GraphiQL, par exemple à l’adresse :

  • http://localhost:4502/content/graphiql.html

Interface GraphiQL

Prise en main des requêtes

Une requête simple consiste à renvoyer le nom de toutes les entrées du schéma Société. Vous demandez ici une liste de tous les noms de sociétés :

query {
  companyList {
    items {
      name
    }
  }
}

Une requête un peu plus complexe consiste à sélectionner toutes les personnes qui n’ont pas de nom « Tâches ». Toutes les personnes qui ne portent pas le nom Tâches seront ainsi filtrées. Ce filtrage est réalisé à l’aide de l’opérateur EQUALS_NOT (il en existe bien d’autres) :

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

Vous pouvez également créer des requêtes plus complexes. Par exemple, faites une requête pour toutes les sociétés qui ont au moins un employé nommé « Smith ». Cette requête illustre le filtrage pour toute personne portant le nom « Smith », qui renvoie des informations provenant des fragments imbriqués :

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

Pour obtenir des détails complets sur l’utilisation de l’API AEM GraphQL, ainsi que la configuration des éléments nécessaires, vous pouvez vous référer aux sections suivantes :

  • Apprendre à utiliser GraphQL avec AEM ;
  • l’exemple de structure de fragment de contenu ;
  • Apprendre à utiliser GraphQL avec AEM – Exemple de contenu et de requêtes

Et après ?

Maintenant que vous avez appris à accéder à votre contenu en mode découplé et à y effectuer des requêtes à l’aide de l’API AEM GraphQL, vous pouvez apprendre à utiliser l’API REST pour accéder au contenu de vos fragments de contenu et le mettre à jour.

Ressources supplémentaires

Sur cette page