L’API GraphQL d’AEM fournit un langage de requête puissant pour exposer les données de fragments de contenu aux applications en aval. Les modèles de fragment de contenu définissent le schéma de données utilisé par les fragments de contenu. Chaque fois qu’un modèle de fragment de contenu est créé ou mis à jour, le schéma est traduit et ajouté au "graphique" qui constitue l’API GraphQL.
Dans ce chapitre, explorons quelques requêtes GraphQL courantes pour rassembler du contenu à l’aide d’un IDE appelé GraphiQL. L’IDE GraphiQL vous permet de tester et d’affiner rapidement les requêtes et les données renvoyées. Il permet également d’accéder facilement à la documentation, ce qui facilite l’apprentissage et la compréhension des méthodes disponibles.
Il s’agit d’un tutoriel en plusieurs parties qui suppose que les étapes décrites dans la section Création de fragments de contenu ont été terminées.
Un point de terminaison GraphQL doit être configuré pour activer les requêtes d’API GraphQL pour les fragments de contenu.
Dans l’écran AEM Démarrer, accédez à Outils > Général > GraphQL.
Appuyer Créer dans le coin supérieur droit de la boîte de dialogue qui s’affiche, saisissez les valeurs suivantes :
Appuyer Créer pour enregistrer le point de terminaison .
Les points de terminaison GraphQL créés à partir d’une configuration de projet activent uniquement les requêtes par rapport aux modèles appartenant à ce projet. Dans ce cas, les seules requêtes de la variable Personne et Équipe peuvent être utilisés.
Un point de terminaison global peut également être créé pour activer les requêtes par rapport aux modèles sur plusieurs configurations. Cette méthode doit être utilisée avec précaution, car elle peut ouvrir l’environnement à d’autres vulnérabilités de sécurité et ajouter à la complexité globale de la gestion des AEM.
Vous devriez maintenant voir un point de terminaison GraphQL activé dans votre environnement.
Le GraphiQL Cet outil permet aux développeurs de créer et de tester des requêtes par rapport au contenu de l’environnement AEM actuel. L’outil GraphiQL permet également aux utilisateurs de persister ou enregistrer requêtes à utiliser par les applications clientes dans un paramètre de production.
Ensuite, explorez la puissance de l’API GraphQL AEM à l’aide de l’IDE GraphiQL intégré.
Dans l’écran AEM Démarrer, accédez à Outils > Général > Éditeur de requêtes GraphQL.
En outre, les anciennes versions de AEM l’IDE GraphiQL peuvent ne pas être intégrées. Il peut être installé manuellement en procédant comme suit : instructions.
Dans le coin supérieur droit, assurez-vous que le point de fin est défini sur Mon point de terminaison de projet.
Cela permettra d’étendre toutes les requêtes aux modèles créés dans la variable Mon projet projet.
Une exigence courante consiste à rechercher plusieurs fragments de contenu.
Collez la requête suivante dans le panneau principal (en remplaçant la liste des commentaires) :
query allTeams {
teamList {
items {
_path
title
}
}
}
Appuyez sur la touche Play dans le menu supérieur pour exécuter la requête. Vous devriez voir les résultats des fragments de contenu du chapitre précédent :
Placez le curseur sous le title
texte et saisie Ctrl+Espace pour déclencher des conseils sur le code. Ajouter shortname
et description
à la requête.
Exécutez à nouveau la requête en appuyant sur la touche Play et vous devriez constater que les résultats incluent les propriétés supplémentaires de shortname
et description
.
Le shortname
est une propriété simple et description
est un champ de texte multiligne et l’API GraphQL nous permet de choisir différents formats pour les résultats, comme html
, markdown
, json
ou plaintext
.
Ensuite, essayez de récupérer les fragments imbriqués dans l’instance de requêtage, rappelez-vous que la fonction Équipe référence le modèle Personne modèle.
Mettez à jour la requête pour inclure le teamMembers
. Rappelez-vous qu’il s’agit d’une Référence de fragment au modèle de personne. Les propriétés du modèle Personne peuvent être renvoyées :
query allTeams {
teamList {
items {
_path
title
shortName
description {
plaintext
}
teamMembers {
fullName
occupation
}
}
}
}
Réponse JSON :
{
"data": {
"teamList": {
"items": [
{
"_path": "/content/dam/my-project/en/team-alpha",
"title": "Team Alpha",
"shortName": "team-alpha",
"description": {
"plaintext": "This is a description of Team Alpha!"
},
"teamMembers": [
{
"fullName": "John Doe",
"occupation": [
"Artist",
"Influencer"
]
},
{
"fullName": "Alison Smith",
"occupation": [
"Photographer"
]
}
]
}
]
}
}
}
La possibilité d’effectuer des requêtes sur des fragments imbriqués est une puissante fonctionnalité de l’API GraphQL d’AEM. Dans cet exemple simple, l’imbrication n’a que deux niveaux de profondeur. Cependant, il est possible d’imbriquer des fragments encore plus loin. Par exemple, si une variable Adresse modèle associé à un Personne il serait possible de renvoyer des données des trois modèles dans une seule requête.
Examinons ensuite comment il est possible de filtrer les résultats en un sous-ensemble de fragments de contenu en fonction d’une valeur de propriété.
Saisissez la requête suivante dans l’interface utilisateur GraphiQL :
query personByName($name:String!){
personList(
filter:{
fullName:{
_expressions:[{
value:$name
_operator:EQUALS
}]
}
}
){
items{
_path
fullName
occupation
}
}
}
La requête ci-dessus effectue une recherche par rapport à tous les fragments de personne du système. Le filtre ajouté au début de la requête effectue une comparaison sur la variable name
champ et chaîne de variable $name
.
Dans le Variables de requête saisissez les informations suivantes :
{"name": "John Doe"}
Exécuter la requête, il est attendu que Personnes Le fragment de contenu est renvoyé avec la valeur John Doe
.
Il existe de nombreuses autres options pour filtrer et créer des requêtes complexes. Voir Formation à l’utilisation de GraphQL avec AEM - Exemples de contenu et de requêtes.
Amélioration de la requête ci-dessus pour récupérer une image de profil
query personByName($name:String!){
personList(
filter:{
fullName:{
_expressions:[{
value:$name
_operator:EQUALS
}]
}
}
){
items{
_path
fullName
occupation
profilePicture{
... on ImageRef{
_path
_authorUrl
_publishUrl
height
width
}
}
}
}
}
Le profilePicture
est une référence de contenu et il doit s’agir d’une image. Il est donc intégré à ImageRef
est utilisé. Cela nous permet de demander des données supplémentaires sur l’image à référencer, comme le width
et height
.
Il est également possible d’interroger directement un seul fragment de contenu. Le contenu d’AEM est stocké de manière hiérarchique et l’identifiant unique d’un fragment est basé sur le chemin du fragment.
Saisissez la requête suivante dans l’éditeur GraphiQL :
query personByPath($path: String!) {
personByPath(_path: $path) {
item {
fullName
occupation
}
}
}
Saisissez les informations suivantes pour la variable Variables de requête:
{"path": "/content/dam/my-project/en/alison-smith"}
Exécutez la requête et vérifiez que le seul résultat est renvoyé.
Une fois qu’un développeur est satisfait de la requête et des données de résultat renvoyées par la requête, l’étape suivante consiste à stocker ou à conserver la requête à AEM. Le Requêtes persistantes sont le mécanisme préféré pour exposer l’API GraphQL aux applications clientes. Une fois qu’une requête a été conservée, elle peut être demandée à l’aide d’une requête de GET et mise en cache aux couches Dispatcher et CDN. Les performances des requêtes persistantes sont bien meilleures. Outre les avantages de performances, les requêtes persistantes garantissent que les données supplémentaires ne sont pas exposées accidentellement aux applications clientes. Plus d’informations sur Les requêtes persistantes se trouvent ici.
Ensuite, conservez deux requêtes simples, elles sont utilisées dans le chapitre suivant.
Saisissez la requête suivante dans l’IDE GraphiQL :
query allTeams {
teamList {
items {
_path
title
shortName
description {
plaintext
}
teamMembers {
fullName
occupation
}
}
}
}
Vérifiez que la requête fonctionne.
Appuyez sur Enregistrer sous et saisissez all-teams
comme la propriété Nom de la requête.
La requête doit s’afficher sous Requêtes persistantes dans le rail de gauche.
Appuyez ensuite sur les ellipses. … en regard de la requête persistante et appuyez sur Copier l’URL pour copier le chemin d’accès dans le presse-papiers.
Ouvrez un nouvel onglet et collez le chemin copié dans votre navigateur :
https://$YOUR-AEMasCS-INSTANCEID$.adobeaemcloud.com/graphql/execute.json/my-project/all-teams
Il doit ressembler au chemin ci-dessus. Vous devriez constater que les résultats JSON de la requête renvoyée.
Ventilation de l’URL ci-dessus :
Nom | Description |
---|---|
/graphql/execute.json |
Point d’entrée de requête persistant |
/my-project |
Configuration du projet pour /conf/my-project |
/all-teams |
Nom de la requête conservée |
Revenez à l’IDE GraphiQL et utilisez le bouton plus + pour conserver la requête NEW
query personByName($name: String!) {
personList(
filter: {
fullName:{
_expressions: [{
value: $name
_operator:EQUALS
}]
}
}){
items {
_path
fullName
occupation
biographyText {
json
}
profilePicture {
... on ImageRef {
_path
_authorUrl
_publishUrl
width
height
}
}
}
}
}
Enregistrez la requête comme suit : person-by-name
.
Vous devez enregistrer deux requêtes conservées :
Lors de la révision et de la vérification, publiez la variable GraphQL Endpoint
& Persisted Queries
Dans l’écran AEM Démarrer, accédez à Outils > Général > GraphQL.
Cochez la case en regard de Mon point de terminaison de projet et appuyez sur Publier
Dans l’écran AEM Démarrer, accédez à Outils > Général > Éditeur de requêtes GraphQL
Appuyez sur le bouton toutes les équipes Requête à partir du panneau Requêtes persistantes et appuyez sur Publier
Répétez l’étape ci-dessus pour person-by-name
query
Téléchargez le contenu, les modèles et les requêtes persistantes créés dans les trois derniers chapitres : tutorial-solution-content.zip
Pour en savoir plus sur les requêtes GraphQL, voir Formation à l’utilisation de GraphQL avec AEM - Exemples de contenu et de requêtes.
Félicitations, vous avez créé et exécuté plusieurs requêtes GraphQL !
Dans le chapitre suivant, Créer l’application React, vous découvrez comment une application externe peut interroger AEM points de terminaison GraphQL et utiliser ces deux requêtes persistantes. Vous avez également été initié à la gestion des erreurs de base lors de l’exécution des requêtes GraphQL.
Dans , certaines versions d’AEM (6.X.X) l’outil IDE GraphiQL doit être installé manuellement. Utilisez la méthode instructions ici.