Blijvende GraphQL-query's
Blijvende query's zijn query's die zijn opgeslagen op de Adobe Experience Manager-server (AEM). Clients kunnen een HTTP-GET-aanvraag met de naam van de query verzenden om deze uit te voeren. Het voordeel van deze aanpak is cacheability. Terwijl client-side GraphQL query's ook kunnen worden uitgevoerd met HTTP POST request, dat niet in cache kan worden geplaatst, kunnen persisted query's in cache worden geplaatst door HTTP caches of een CDN, waardoor de prestaties verbeteren. De gepersisteerde vragen staan u toe om uw verzoeken te vereenvoudigen en veiligheid te verbeteren omdat uw vragen op de server worden ingekapseld en de AEM beheerder volledige controle over hen heeft. Het is beste praktijken en hoogst aanbevolen als u doorlopende query's wilt gebruiken wanneer u met de AEM GraphQL API werkt.
In het vorige hoofdstuk hebt u enkele geavanceerde GraphQL-query's onderzocht om gegevens voor de WKND-app te verzamelen. In dit hoofdstuk, blijft u de vragen aan AEM en leert hoe te om geheim voorgeheugencontrole op persisted query te gebruiken.
Vereisten prerequisites
Dit document is onderdeel van een zelfstudie met meerdere onderdelen. Zorg ervoor dat de vorige hoofdstuk is voltooid voordat u verdergaat met dit hoofdstuk.
Doelstellingen objectives
Leer in dit hoofdstuk hoe te:
- GraphQL-query's met parameters blijven gebruiken
- De cache-control parameters van het gebruik met persistente vragen
Controleren Aangehouden GraphQL-query's configuratie-instelling
Laten we eens kijken naar: Aangehouden GraphQL-query's worden toegelaten voor het project van de Plaats WKND in uw AEM instantie.
-
Navigeren naar Gereedschappen > Algemeen > Configuratiebrowser.
-
Selecteren WKND gedeeld selecteert u vervolgens Eigenschappen in de bovenste navigatiebalk om configuratie-eigenschappen te openen. Op de pagina van de Eigenschappen van de Configuratie, zou u moeten zien dat Blijvende GraphQL-query's machtiging is ingeschakeld.
Handhaaf GraphQL-query's met het gereedschap GraphiQL Explorer
In deze sectie, laten wij de vraag van GraphQL voortzetten die later in de cliënttoepassing wordt gebruikt om de gegevens van het Fragment van de Inhoud van de Avontuur te halen en terug te geven.
-
Ga de volgende vraag in de Ontdekkingsreiziger GraphiQL in:
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 } } } }
Controleer of de query werkt voordat u deze opslaat.
-
Tik op Opslaan als en voer de volgende keer in
adventure-details-by-slug
als Naam query.
Doorlopende query uitvoeren met variabelen door speciale tekens te coderen
Laten we begrijpen hoe voortgezette query's met variabelen worden uitgevoerd door de toepassing aan de clientzijde door de speciale tekens te coderen.
Om een voortgezette vraag uit te voeren, doet de cliënttoepassing een verzoek van de GET gebruikend de volgende syntaxis:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>
Een voortgezette query uitvoeren met een variabele De bovenstaande syntaxis verandert in:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>;variable1=value1;variable2=value2
De speciale tekens zoals puntkomma's (;), gelijkteken (=), slashes (/) en spatie moeten worden omgezet om de overeenkomstige UTF-8-codering te gebruiken.
Door het getAllAdventureDetailsBySlug
vraag van de bevel-lijn terminal, herzien wij deze concepten in actie.
-
Open de GrahiQL Explorer en klik op ovalen (…) naast de permanente query
getAllAdventureDetailsBySlug
en klik vervolgens op URL kopiëren. Plak gekopieerde URL in een tekstblok en ziet er als volgt uit:code language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=
-
Toevoegen
yosemite-backpacking
als variabele waardecode language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=yosemite-backpacking
-
De puntkomma's (;) en speciale tekens voor het gelijkteken (=) coderen
code language-code http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
-
Een opdrachtregelterminal openen en gebruiken Krol de query uitvoeren
code language-shell $ curl -X GET http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
Ook, revisie Hoe te om een Verlengde vraag uit te voeren, Query-variabelen gebruiken, en De URL van de query coderen voor gebruik door een app om aanhoudende vraaguitvoering door cliënttoepassingen te leren.
De cache-control parameters van de update in persistente query's cache-control-all-adventures
Met de AEM GraphQL API kunt u de standaardparameters voor het beheren van cache bijwerken naar uw query's om de prestaties te verbeteren. De standaardwaarden voor cachebeheer zijn:
-
60 seconden is het gebrek (maxage=60) TTL voor de cliënt (bijvoorbeeld, browser)
-
7200 seconden is het gebrek (s-maxage=7200) TTL voor de Verzender en CDN; ook gekend als gedeelde geheime voorgeheugens
Gebruik de adventures-all
vraag om de geheim voorgeheugen-controle parameters bij te werken. De vraagreactie is groot en het is nuttig om zijn te controleren age
in de cache. Deze voortgezette query wordt later gebruikt om de clienttoepassing.
-
Open de GrahiQL Explorer en klik op ovalen (…) naast de permanente query klikt u op Kopteksten openen Cacheconfiguratie modal.
-
In de Cacheconfiguratie modaal, update
max-age
koptekstwaarde naar600
seconden (10 minuten) en klik vervolgens op Opslaan
Controleren Door uw doorlopende query's in cache te plaatsen voor meer informatie over standaardcache-control parameters.
Gefeliciteerd!
Gefeliciteerd! U hebt nu geleerd hoe te om de vragen van GraphQL met parameters voort te zetten, voortgeduurde vragen bij te werken, en cache-controle parameters met voortgezette vragen te gebruiken.
Volgende stappen
In de volgende hoofdstuk, implementeert u de aanvragen voor doorlopende query's in de WKND-app.