Requêtes GraphQL persistantes

Les requêtes persistantes sont des requêtes stockées sur le serveur Adobe Experience Manager (AEM). Les clients peuvent envoyer une requête de GET HTTP avec le nom de la requête pour l’exécuter. L’avantage de cette approche est la mise en cache. Bien que les requêtes GraphQL côté client puissent également être exécutées à l’aide de requêtes de POST HTTP, qui ne peuvent pas être mises en cache, les requêtes persistantes peuvent être mises en cache par des caches HTTP ou un réseau de diffusion de contenu, ce qui améliore les performances. Les requêtes persistantes vous permettent de simplifier vos requêtes et d’améliorer la sécurité, car vos requêtes sont encapsulées sur le serveur et l’administrateur AEM en a le contrôle total. Il s’agit de bonne pratique et fortement recommandée pour utiliser des requêtes persistantes lors de l’utilisation de l’API GraphQL AEM.

Dans le chapitre précédent, vous avez exploré certaines requêtes GraphQL avancées afin de collecter des données pour l’application WKND. Dans ce chapitre, vous conservez les requêtes à AEM et apprenez à utiliser le contrôle du cache sur les requêtes persistantes.

Prérequis

Ce document fait partie d’un tutoriel en plusieurs parties. Assurez-vous que la variable chapitre précédent a été terminé avant de poursuivre ce chapitre.

Objectifs

Dans ce chapitre, découvrez comment :

  • Persistance des requêtes GraphQL avec des paramètres
  • Utilisation des paramètres de contrôle du cache avec des requêtes persistantes

Réviser Requêtes persistantes GraphQL paramètre de configuration

Examinons que Requêtes persistantes GraphQL sont activés pour le projet de site WKND dans votre instance AEM.

  1. Accédez à Outils > Général > Explorateur de configuration.

  2. Sélectionner WKND partagé, puis sélectionnez Propriétés dans la barre de navigation supérieure pour ouvrir les propriétés de configuration. Sur la page Propriétés de configuration, vous devriez voir que la variable Requêtes persistantes GraphQL l’autorisation est activée.

    Propriétés de configuration

Persistance des requêtes GraphQL à l’aide de l’outil GraphiQL Explorer de création

Dans cette section, conservons la requête GraphQL qui est ensuite utilisée dans l’application cliente pour récupérer et générer les données du fragment de contenu Adventure.

  1. Saisissez la requête suivante dans l’explorateur GraphiQL :

    query getAdventureDetailsBySlug($slug: String!) {
    adventureList(filter: {slug: {_expressions: [{value: $slug}]}}) {
        items {
        _path
        title
        activity
        adventureType
        price
        tripLength
        groupSize
        difficulty
        primaryImage {
            ... on ImageRef {
            _path
            mimeType
            width
            height
            }
        }
        description {
            html
            json
        }
        itinerary {
            html
            json
        }
        location {
            _path
            name
            description {
            html
            json
            }
            contactInfo {
            phone
            email
            }
            locationImage {
            ... on ImageRef {
                _path
            }
            }
            weatherBySeason
            address {
            streetAddress
            city
            state
            zipCode
            country
            }
        }
        instructorTeam {
            _metadata {
            stringMetadata {
                name
                value
            }
            }
            teamFoundingDate
            description {
            json
            }
            teamMembers {
            fullName
            contactInfo {
                phone
                email
            }
            profilePicture {
                ... on ImageRef {
                _path
                }
            }
            instructorExperienceLevel
            skills
            biography {
                html
            }
            }
        }
        administrator {
            fullName
            contactInfo {
            phone
            email
            }
            biography {
            html
            }
        }
        }
        _references {
        ... on ImageRef {
            _path
            mimeType
        }
        ... on LocationModel {
            _path
            __typename
        }
        }
    }
    }
    

    Vérifiez que la requête fonctionne avant de l’enregistrer.

  2. Appuyez ensuite sur Enregistrer sous et saisissez adventure-details-by-slug comme nom de la requête.

    Persist GraphQL Query

Exécution de la requête persistante avec des variables en encodant des caractères spéciaux

Comprenons comment les requêtes persistantes avec des variables sont exécutées par l’application côté client en encodant les caractères spéciaux.

Pour exécuter une requête persistante, l’application cliente effectue une requête GET en utilisant la syntaxe suivante :

GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>

Pour exécuter une requête persistante avec une variable, la syntaxe ci-dessus change en :

GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>;variable1=value1;variable2=value2

Les caractères spéciaux tels que les points-virgules (;), le signe égal (=), les barres obliques (/) et l’espace doivent être convertis pour utiliser le codage UTF-8 correspondant.

En exécutant la fonction getAllAdventureDetailsBySlug à partir du terminal de ligne de commande, nous passons en revue ces concepts en action.

  1. Ouvrez l’explorateur GraphiQL et cliquez sur le bouton ellipses (…) en regard de la requête persistante getAllAdventureDetailsBySlug, puis cliquez sur Copier l’URL. Collez l’URL copiée dans un bloc de texte, comme suit :

        http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=
    
  2. Ajouter yosemite-backpacking comme valeur de variable

        http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=yosemite-backpacking
    
  3. Codez les points-virgules (;) et le signe égal (=) les caractères spéciaux

        http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
    
  4. Ouvrez un terminal de ligne de commande et utilisez Curl exécution de la requête

    $ curl -X GET http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
    
CONSEIL

Si vous exécutez la requête ci-dessus sur l’environnement de création AEM, vous devez envoyer les informations d’identification. Voir Jeton d’accès au développement local pour en démontrer l’existence et Appel de l’API AEM pour plus d’informations sur la documentation.

En outre, passez en revue Exécution d’une requête persistante, Utilisation de variables de requête, et Encodage de l’URL de requête à utiliser par une application pour découvrir l’exécution de requêtes persistantes par les applications clientes.

Mise à jour des paramètres de contrôle du cache dans les requêtes persistantes

L’API GraphQL AEM vous permet de mettre à jour les paramètres de contrôle du cache par défaut vers vos requêtes afin d’améliorer les performances. Les valeurs par défaut de contrôle du cache sont les suivantes :

  • 60 secondes est la durée de vie par défaut (maxage=60) du client (par exemple, un navigateur).

  • 7 200 secondes est la durée de vie par défaut (s-maxage=7 200) pour Dispatcher et CDN ; également appelés caches partagés

Utilisez la variable adventures-all pour mettre à jour les paramètres de contrôle du cache. La réponse de la requête est volumineuse et utile pour contrôler ses age dans le cache. Cette requête persistante est utilisée ultérieurement pour mettre à jour la variable application cliente.

  1. Ouvrez l’explorateur GraphiQL et cliquez sur le bouton ellipses (…) en regard de la requête persistante, puis cliquez sur En-têtes pour ouvrir Configuration du cache modale.

    Option Persist GraphQL Header

  2. Dans le Configuration du cache modale, mettez à jour le max-age valeur d’en-tête à 600 secondes (10 minutes), puis cliquez sur Enregistrer

    Persistance de la configuration du cache GraphQL

Réviser Mise en cache de vos requêtes persistantes pour plus d’informations sur les paramètres de contrôle du cache par défaut.

Félicitations !

Félicitations ! Vous avez maintenant appris à conserver les requêtes GraphQL avec des paramètres, à mettre à jour les requêtes persistantes et à utiliser des paramètres de contrôle du cache avec des requêtes persistantes.

Étapes suivantes

Dans le chapitre suivant, vous implémenterez les requêtes de requêtes persistantes dans l’application WKND.

Sur cette page