I den här delen av AEM Headless Developer Journey du kan lära dig hur du använder GraphQL-frågor för att komma åt innehållet i dina innehållsfragment och skicka det till din app (headless-leverans).
I det föregående dokumentet om den AEM resan utan headless Så här modellerar du ditt innehåll Du lärde dig grunderna i innehållsmodellering i AEM, så du bör nu förstå hur du modellerar innehållsstrukturen och sedan inse den strukturen med hjälp AEM Content Fragment Models och Content Fragments:
Den här artikeln bygger på dessa grundläggande funktioner så att du förstår hur du får tillgång till ditt befintliga headless-innehåll i AEM med hjälp av det AEM GraphQL-API:t.
Så… du har fått allt det här innehållet, är strukturerat (i innehållsfragment) och bara väntar på att mata din nya app. Frågan är - hur man får dit den?
Vad du behöver är ett sätt att rikta specifikt innehåll, välja vad du behöver och returnera det till appen för vidare bearbetning.
Med Adobe Experience Manager (AEM) as a Cloud Service kan du selektivt komma åt dina innehållsfragment med hjälp av det AEM GraphQL-API:t och endast returnera det innehåll du behöver. Det innebär att du kan leverera strukturerat innehåll utan extra kostnad och använda det i dina program.
AEM GraphQL API är en anpassad implementering som baseras på GraphQL standard-API-specifikationen.
GraphQL är en öppen källkodsspecifikation som innehåller:
GraphQL är ett starkt typbestämt API. Detta innebär att alla innehållet måste vara tydligt strukturerat och strukturerat efter typ, så att GraphQL förstår vad du ska komma åt och hur. Datafälten definieras i GraphQL-scheman, som definierar strukturen för innehållsobjekten.
GraphQL slutpunkter innehåller sedan de sökvägar som svarar på GraphQL-frågorna.
Allt detta innebär att appen kan välja innehåll som den behöver på ett korrekt, tillförlitligt och effektivt sätt - precis vad du behöver när du använder AEM.
Se GraphQL.org och GraphQL.com.
AEM GraphQL API är en anpassad version som baseras på GraphQL API-standardspecifikationen som är särskilt konfigurerad för att du ska kunna utföra (komplexa) frågor på dina innehållsfragment.
Innehållsfragment används eftersom innehållet är strukturerat enligt modeller för innehållsfragment. Detta uppfyller GraphQL grundläggande krav.
För att få åtkomst till GraphQL för AEM (och innehållet) används en slutpunkt för att ange åtkomstsökvägen.
Innehållet som returneras via AEM GraphQL API kan sedan användas av dina program.
För att du ska få hjälp med direkt inmatning och testfrågor finns en implementering av standardgränssnittet GraphiQL som också kan användas med AEM GraphQL (som kan installeras med AEM). Den innehåller funktioner som syntaxmarkering, automatisk komplettering, automatisk föreslå, samt historik och onlinedokumentation.
Implementeringen AEM GraphQL API baseras på GraphQL Java-bibliotek.
Innehållsfragment kan användas som bas för GraphQL för AEM scheman och frågor som:
Dessa modeller för innehållsfragment:
The Fragmentreferens:
Är en specifik datatyp tillgänglig när du definierar en innehållsfragmentmodell.
Refererar till ett annat fragment, beroende på en viss innehållsfragmentmodell.
Gör att du kan skapa och sedan hämta strukturerade data.
Om du vill ha hjälp med att designa och utveckla dina modeller för innehållsfragment kan du förhandsgranska JSON-utdata i redigeraren för innehållsfragment.
Innan du börjar med frågor om ditt innehåll måste du:
Om du vill använda det AEM GraphQL-API:t i en fråga kan vi använda de två mycket grundläggande modellstrukturerna för innehållsfragment:
Som du ser refererar fälten CEO och Employees till Personfragmenten.
Fragmentmodellerna används:
Frågorna kan anges i GraphiQL-gränssnittet. Du kan öppna frågeredigeraren från:
http://localhost:4502/aem/graphiql.html
En enkel fråga är att returnera namnet på alla poster i företagsschemat. Här begär du en lista med alla företagsnamn:
query {
companyList {
items {
name
}
}
}
En något mer komplex fråga är att markera alla personer som inte har namnet"Jobs". Detta filtrerar alla personer för alla som inte har namnet Jobs. Detta uppnås med operatorn EQUALS_NOT (det finns många fler):
query {
personList(filter: {
name: {
_expressions: [
{
value: "Jobs"
_operator: EQUALS_NOT
}
]
}
}) {
items {
name
firstName
}
}
}
Du kan också skapa mer komplexa frågor. Du kan till exempel söka efter alla företag som har minst en anställd med namnet "Smith". Den här frågan visar filtrering för alla personer med namnet "Smith", vilket returnerar information från de kapslade fragmenten:
query {
companyList(filter: {
employees: {
_match: {
name: {
_expressions: [
{
value: "Smith"
}
]
}
}
}
}) {
items {
name
ceo {
name
firstName
}
employees {
name
firstName
}
}
}
}
Mer information om hur du använder AEM GraphQL API tillsammans med de nödvändiga elementen finns i följande exempel:
Nu när du har lärt dig hur du får åtkomst till och frågar efter headless-innehåll med det AEM GraphQL API som du nu kan lära dig hur du använder REST API för att få tillgång till och uppdatera innehållet i dina innehållsfragment.