Consultas persistentes de GraphQL
Las consultas persistentes son consultas que se almacenan en el servidor de Adobe Experience Manager AEM (). Los clientes pueden enviar una solicitud HTTP con el nombre de la GET para ejecutarla. El beneficio de este enfoque es la accesibilidad. Aunque las consultas GraphQL del lado del cliente también se pueden ejecutar mediante solicitudes de POST HTTP, que no se pueden almacenar en caché, las consultas persistentes se pueden almacenar en caché mediante cachés HTTP o una CDN, lo que mejora el rendimiento. AEM Las consultas persistentes le permiten simplificar las solicitudes y mejorar la seguridad, ya que las consultas se encapsulan en el servidor y el administrador tiene un control total sobre ellas. AEM Es una práctica recomendada y muy recomendable usar consultas persistentes al trabajar con la API de GraphQL de la.
En el capítulo anterior, ha explorado algunas consultas avanzadas de GraphQL para recopilar datos para la aplicación WKND. AEM En este capítulo, persistirá en las consultas para que se utilicen y aprenderá a utilizar el control de caché en las consultas persistentes.
Requisitos previos prerequisites
Este documento forma parte de un tutorial de varias partes. Asegúrese de que el capítulo anterior se haya completado antes de continuar con este capítulo.
Objetivos objectives
En este capítulo, aprenderá a:
- Persistir consultas de GraphQL con parámetros
- Usar parámetros de control de caché con consultas persistentes
Revisar la configuración de Consultas persistentes de GraphQL
Revisemos que Consultas persistentes de GraphQL AEM están habilitadas para el proyecto del sitio WKND en su instancia de la.
-
Vaya a Herramientas > General > Explorador de configuración.
-
Seleccione WKND compartido y, a continuación, seleccione Propiedades en la barra de navegación superior para abrir las propiedades de configuración. En la página Propiedades de configuración, debería ver que el permiso Consultas persistentes de GraphQL está habilitado.
Persistir consultas de GraphQL mediante la herramienta Explorador de GraphiQL integrada
En esta sección, vamos a mantener la consulta de GraphQL que se utiliza posteriormente en la aplicación cliente para recuperar y procesar los datos del fragmento de contenido de aventura.
-
Introduzca la siguiente consulta en el Explorador de GraphiQL:
code language-graphql 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 } } } }
Compruebe que la consulta funciona antes de guardarla.
-
A continuación, pulse Guardar como e introduzca
adventure-details-by-slug
como nombre de la consulta.
Ejecución de consultas persistentes con variables mediante la codificación de caracteres especiales
Comprendamos cómo las consultas persistentes con variables se ejecutan en la aplicación del lado del cliente codificando los caracteres especiales.
Para ejecutar una consulta persistente, la aplicación cliente realiza una solicitud de GET utilizando la siguiente sintaxis:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>
Para ejecutar una consulta persistente con una variable, la sintaxis anterior cambia a:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>;variable1=value1;variable2=value2
Los caracteres especiales como punto y coma (;), signo igual (=), barras diagonales (/) y espacio deben convertirse para utilizar la codificación UTF-8 correspondiente.
Al ejecutar la consulta getAllAdventureDetailsBySlug
desde el terminal de línea de comandos, se revisan estos conceptos en acción.
-
Abra el Explorador de GraphiQL, haga clic en los puntos suspensivos (…) junto a la consulta persistente
getAllAdventureDetailsBySlug
y, a continuación, haga clic en Copiar URL. Pegue la URL copiada en un panel de texto y tenga el siguiente aspecto:code language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=
-
Agregar
yosemite-backpacking
como valor de variablecode language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=yosemite-backpacking
-
Codifique los caracteres especiales punto y coma (;) y signo igual (=)
code language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
-
Abra un terminal de línea de comandos y ejecute la consulta con Curl
code language-shell $ curl -X GET http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
Además, revise Cómo ejecutar una consulta persistente, Usar variables de consulta y Codificar la URL de consulta para que la use una aplicación para aprender la ejecución de consultas persistentes por aplicaciones cliente.
Actualizar parámetros de control de caché en consultas persistentes cache-control-all-adventures
AEM La API de GraphQL le permite actualizar los parámetros predeterminados de control de caché a sus consultas para mejorar el rendimiento. Los valores predeterminados de control de caché son:
-
60 segundos es el TTL predeterminado (máximo=60) para el cliente (por ejemplo, un explorador)
-
7200 segundos es el TTL predeterminado (s-maxage=7200) para Dispatcher y CDN; también conocido como cachés compartidas
Utilice la consulta adventures-all
para actualizar los parámetros de control de caché. La respuesta a la consulta es grande y resulta útil controlar su age
en la caché. Esta consulta persistente se usa más adelante para actualizar la aplicación cliente.
-
Abra el Explorador de GraphiQL, haga clic en los puntos suspensivos (…) junto a la consulta persistente y, a continuación, haga clic en Encabezados para abrir el modal Configuración de caché.
-
En el modal Cache Configuration, actualice el valor del encabezado
max-age
a600
segundos (10 minutos) y luego haga clic en Guardar
Revise Almacenamiento en caché de las consultas persistentes para obtener más información sobre los parámetros predeterminados de control de caché.
Enhorabuena.
Enhorabuena. Ahora ha aprendido a hacer que persistan las consultas de GraphQL con parámetros, a actualizar las consultas persistentes y a utilizar parámetros de control de caché con consultas persistentes.
Pasos siguientes
En el capítulo siguiente, implementará las solicitudes para consultas persistentes en la aplicación WKND.