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.

  1. Navigeren naar Gereedschappen > Algemeen > Configuratiebrowser.

  2. 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.

    Configuratieeigenschappen

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.

  1. 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.

  2. Tik op Opslaan als en voer de volgende keer in adventure-details-by-slug als Naam query.

    GraphQL-query behouden

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.

  1. Open de GrahiQL Explorer en klik op ovalen (…) naast de permanente query getAllAdventureDetailsBySlugen 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=
    
  2. Toevoegen yosemite-backpacking als variabele waarde

    code language-code
        http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=yosemite-backpacking
    
  3. 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
    
  4. 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
    
TIP
Als het runnen van de bovengenoemde vraag tegen het milieu van de AEM Auteur, moet u de geloofsbrieven verzenden. Zie Toegangstoken lokale ontwikkeling ter demonstratie daarvan en De AEM-API aanroepen voor meer informatie.

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.

  1. Open de GrahiQL Explorer en klik op ovalen (…) naast de permanente query klikt u op Kopteksten openen Cacheconfiguratie modal.

    Optie GraphQL-koptekst behouden

  2. In de Cacheconfiguratie modaal, update max-age koptekstwaarde naar 600 seconden (10 minuten) en klik vervolgens op Opslaan

    Configuratie GraphQL-cache behouden

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.

recommendation-more-help
e25b6834-e87f-4ff3-ba56-4cd16cdfdec4