Query GraphQL persistenti
- Si applica a:
- Experience Manager as a Cloud Service
Creato per:
- Intermedio
- Sviluppatore
Le query persistenti sono query memorizzate sul server Adobe Experience Manager (AEM). I client possono inviare una richiesta HTTP GET con il nome della query per eseguirla. Il vantaggio di questo approccio è la possibilità di memorizzazione in cache. Mentre le query GraphQL lato client possono essere eseguite anche utilizzando richieste HTTP POST, che non possono essere memorizzate nella cache, le query persistenti possono essere memorizzate nella cache da cache HTTP o da una rete CDN, migliorando le prestazioni. Le query persistenti ti consentono di semplificare le richieste e migliorare la sicurezza, in quanto sono incapsulate nel server e l’amministratore di AEM ne ha il pieno controllo. È buona prassi ed è vivamente consigliato utilizzare le query persistenti quando si lavora con l'API GraphQL di AEM.
Nel capitolo precedente, hai esplorato alcune query GraphQL avanzate per raccogliere dati per l’app WKND. In questo capitolo, rendi le query persistenti in AEM e scopri come utilizzare il controllo della cache sulle query persistenti.
Prerequisiti
Questo documento fa parte di un'esercitazione in più parti. Prima di procedere con questo capitolo, assicurati che il capitolo precedente sia stato completato.
Obiettivi
In questo capitolo, scopri come:
- Mantenere le query GraphQL con i parametri
- Utilizzare parametri di controllo cache con query persistenti
Rivedi l'impostazione di configurazione Query GraphQL persistenti
Esaminiamo che le query persistenti di GraphQL sono abilitate per il progetto del sito WKND nell'istanza di AEM.
-
Passa a Strumenti > Generale > Browser configurazioni.
-
Seleziona Condiviso WKND, quindi seleziona Proprietà nella barra di navigazione superiore per aprire le proprietà di configurazione. Nella pagina Proprietà di configurazione, dovresti notare che l'autorizzazione Query persistenti GraphQL è abilitata.
Mantenere le query GraphQL utilizzando lo strumento GraphiQL Explorer incorporato
In questa sezione, rendiamo persistente la query GraphQL che viene successivamente utilizzata nell’applicazione client per recuperare ed eseguire il rendering dei dati dei frammenti di contenuto Adventure.
-
Immetti la seguente query in GraphiQL Explorer:
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 } } } }Verifica che la query funzioni prima di salvarla.
-
Tocca quindi Salva con nome e immetti
adventure-details-by-slugcome nome della query.
Esecuzione di query persistenti con variabili tramite codifica di caratteri speciali
Comprendiamo in che modo le query persistenti con variabili vengono eseguite dall’applicazione lato client codificando i caratteri speciali.
Per eseguire una query persistente, l’applicazione client effettua una richiesta GET utilizzando la seguente sintassi:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>
Per eseguire una query persistente con una variabile, la sintassi precedente cambia in:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>;variable1=value1;variable2=value2
I caratteri speciali come punto e virgola (;), segno di uguale (=), barre (/) e spazio devono essere convertiti per utilizzare la codifica UTF-8 corrispondente.
Eseguendo la query getAllAdventureDetailsBySlug dal terminale della riga di comando, questi concetti vengono esaminati in azione.
-
Apri GraphiQL Explorer e fai clic sui puntini di sospensione (…) accanto alla query persistente
getAllAdventureDetailsBySlug, quindi fai clic su Copia URL. Incolla l’URL copiato in un riquadro di testo, come illustrato di seguito:http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug= -
Aggiungi
yosemite-backpackingcome valore della variabilehttp://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=yosemite-backpacking -
Codificare i punti e virgola (;) e il segno di uguale (=) caratteri speciali
http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking -
Apri un terminale della riga di comando e utilizzando Curl esegui la query
$ curl -X GET http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
Rivedi inoltre Come eseguire una query persistente, Utilizzando le variabili di query e Codificare l'URL della query per l'utilizzo da parte di un'app per apprendere l'esecuzione di query persistenti da parte delle applicazioni client.
Aggiornamento dei parametri di controllo cache nelle query persistenti
L’API GraphQL di AEM ti consente di aggiornare i parametri predefiniti di controllo cache alle query per migliorare le prestazioni. I valori predefiniti per il controllo della cache sono:
-
60 secondi è il valore TTL predefinito (maxage=60) per il client (ad esempio, un browser)
-
7200 secondi, TTL predefinito (s-maxage=7200) per Dispatcher e CDN; noto anche come cache condivise
Utilizzare la query adventures-all per aggiornare i parametri di controllo cache. La risposta alla query è grande ed è utile controllarne age nella cache. Questa query persistente viene utilizzata in seguito per aggiornare l'applicazione client.
-
Apri GraphiQL Explorer e fai clic sui puntini di sospensione (…) accanto alla query persistente, quindi fai clic su Intestazioni per aprire il modale Configurazione cache.
-
Nel modale Configurazione cache, aggiorna il valore dell'intestazione
max-agea600secondi (10 minuti), quindi fai clic su Salva
Rivedi Memorizzazione in cache delle query persistenti per ulteriori informazioni sui parametri predefiniti di controllo cache.
Congratulazioni.
Congratulazioni Ora hai imparato a rendere persistenti le query GraphQL con parametri, aggiornare le query persistenti e utilizzare parametri di controllo cache con le query persistenti.
Passaggi successivi
Nel prossimo capitolo, implementerai le richieste di query persistenti nell'app WKND.