Beständiga GraphQL-frågor
Beständiga frågor är frågor som lagras på Adobe Experience Manager-servern (AEM). Klienter kan skicka en HTTP GET-begäran med frågenamnet för att köra den. Fördelen med detta är tillgänglighet. GraphQL-frågor på klientsidan kan också köras med HTTP POST-begäranden, som inte kan cachas, men beständiga frågor kan cachas med HTTP-cacher eller CDN, vilket förbättrar prestandan. Med beständiga frågor kan du förenkla dina förfrågningar och förbättra säkerheten eftersom dina frågor är inkapslade på servern och AEM-administratören har full kontroll över dem. Det är bästa sättet och rekommenderas att använda beständiga frågor när du arbetar med AEM GraphQL API.
I det föregående kapitlet har du utforskat några avancerade GraphQL-frågor för att samla in data för WKND-appen. I det här kapitlet kvarstår frågorna för AEM och du får lära dig hur du använder cachekontroll för beständiga frågor.
Förutsättningar prerequisites
Det här dokumentet är en del av en självstudiekurs i flera delar. Kontrollera att det föregående kapitlet har slutförts innan du fortsätter med det här kapitlet.
Mål objectives
Läs om hur du gör följande i det här kapitlet:
- Behåll GraphQL-frågor med parametrar
- Använd parametrar för cachekontroll med beständiga frågor
Granska konfigurationsinställningen för GraphQL-beständiga frågor
Låt oss kontrollera att GraphQL Persisted Queries har aktiverats för WKND Site-projektet i din AEM-instans.
-
Navigera till Verktyg > Allmänt > Konfigurationsläsaren.
-
Välj WKND delad och välj sedan Egenskaper i det övre navigeringsfältet för att öppna konfigurationsegenskaper. På sidan Konfigurationsegenskaper ser du att behörigheten GraphQL Persistent Queries är aktiverad.
Bevara GraphQL-frågor med inbyggda GraphiQL Explorer-verktyg
I det här avsnittet ska vi behålla den GraphQL-fråga som senare används i klientprogrammet för att hämta och återge Adventure Content Fragment-data.
-
Ange följande fråga i GraphiQL Explorer:
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 } } } }Kontrollera att frågan fungerar innan du sparar den.
-
Tryck sedan på Spara som och ange
adventure-details-by-slugsom frågenamn.
Utför beständig fråga med variabler genom att koda specialtecken
Låt oss förstå hur beständiga frågor med variabler körs av klientprogram genom att koda specialtecknen.
För att köra en beständig fråga gör klientprogrammet en GET-begäran med följande syntax:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>
Om du vill köra en beständig fråga med variabeln ändras syntaxen ovan till:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>;variable1=value1;variable2=value2
Specialtecken som semikolon (;), likhetstecken (=), snedstreck (/) och blanksteg måste konverteras för att motsvarande UTF-8-kodning ska kunna användas.
Genom att köra getAllAdventureDetailsBySlug-frågan från kommandoradsterminalen granskar vi dessa koncept i praktiken.
-
Öppna GraphiQL Explorer och klicka på ellipserna (…) bredvid den beständiga frågan
getAllAdventureDetailsBySlug. Klicka sedan på Kopiera URL. Klistra in kopierad URL i en textruta ser ut så här:code language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug= -
Lägg till
yosemite-backpackingsom variabelvärdecode language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=yosemite-backpacking -
Koda specialtecken för semikolon (;) och likhetstecken (=)
code language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking -
Öppna en kommandoradsterminal och kör frågan med Curl
code language-shell $ curl -X GET http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
Granska även Så här kör du en beständig fråga, Använda frågevariabler och Kodar fråge-URL:en för användning av ett program för att lära dig beständig frågekörning av klientprogram.
Uppdatera parametrar för cachekontroll i beständiga frågor cache-control-all-adventures
Med AEM GraphQL API kan du uppdatera standardparametrarna för cachekontroll till dina frågor för att förbättra prestandan. Standardvärdena för cachekontroll är:
-
60 sekunder är standardvärde (maxage=60) för klientens TTL (t.ex. en webbläsare)
-
7200 sekunder är standardvärdet (s-maxage=7200) för TTL för Dispatcher och CDN, även kallat delade cacheminnen
Använd frågan adventures-all för att uppdatera parametrarna för cachekontroll. Frågesvaret är stort och det är användbart att kontrollera dess age i cachen. Den beständiga frågan används senare för att uppdatera klientprogrammet.
-
Öppna GraphiQL Explorer och klicka på ellipserna (…) bredvid den beständiga frågan. Klicka sedan på Huvuden för att öppna modal Cache Configuration .
-
Uppdatera sidhuvudsvärdet
max-agetill600sekunder (10 min) i Cache Configuration modal och klicka sedan på Save
Granska Cachelagra dina beständiga frågor om du vill ha mer information om standardparametrar för cachekontroll.
Grattis!
Grattis! Du har nu lärt dig att behålla GraphQL-frågor med parametrar, uppdatera beständiga frågor och använda cachekontrollparametrar med beständiga frågor.
Nästa steg
I nästa kapitel implementerar du förfrågningar för beständiga frågor i WKND-appen.