Få åtkomst till ditt innehåll via AEM-API:er access-your-content
I den här delen av AEM Headless Developer Journey kan du 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 delivery).
Story hittills story-so-far
I det föregående dokumentet från den AEM resan lärde du dig Så här modellerar du ditt innehåll grunderna i innehållsmodellering i AEM, så du bör nu förstå hur du modellerar innehållsstrukturen och sedan inse att strukturen med AEM Content Fragment Models och Content Fragments:
- Identifiera koncept och terminologi i samband med innehållsmodellering.
- Förstå varför innehållsmodellering behövs för leverans av Headless-innehåll.
- Förstå hur ni kan förverkliga den här strukturen med AEM Content Fragment Models (och skapa innehåll med Content Fragments).
- Förstå hur du modellerar innehåll, principer med grundläggande exempel.
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.
-
Målgrupp: Nybörjare
-
Mål: Lär dig hur du kommer åt innehållet i dina innehållsfragment med hjälp AEM GraphQL-frågor:
- Nu kommer GraphQL och AEM GraphQL API.
- Ta en titt på detaljerna i AEM GraphQL API.
- Titta på några exempelfrågor för att se hur saker och ting fungerar i praktiken.
Så du vill komma åt ditt innehåll? so-youd-like-to-access-your-content
Så… du har allt det här innehållet, snyggt strukturerat (i innehållsfragment) och bara väntat 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) 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.
GraphQL - en introduktion graphql-introduction
GraphQL är en öppen källkodsspecifikation som innehåller:
- ett frågespråk där du kan välja specifikt innehåll från strukturerade objekt.
- en körningsmiljö där du kan utföra dessa frågor med ditt strukturerade innehåll.
GraphQL är ett starkt-typat API. Det innebär att allt-innehåll måste vara tydligt strukturerat och organiserat efter typ, så att GraphQL förstår vad som ska användas 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.
AEM GRAPHQL API aem-graphql-api
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.
- En innehållsfragmentmodell består av ett eller flera fält.
- Varje fält definieras enligt en datatyp.
- Content Fragment Models används för att generera motsvarande AEM GraphQL-scheman.
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.
Innehållsfragment för användning med AEM GraphQL API content-fragments-use-with-aem-graphql-api
Innehållsfragment kan användas som bas för GraphQL för AEM scheman och frågor som:
- Med dem kan du utforma, skapa, strukturera och publicera sidoberoende innehåll som kan levereras utan problem.
- De baseras på en Content Fragment Model, som fördefinierar strukturen för det resulterande fragmentet med hjälp av ett urval datatyper.
- Ytterligare strukturlager kan uppnås med datatypen Fragmentreferens, som är tillgänglig när du definierar en modell.
Modeller för innehållsfragment content-fragments-models
Dessa modeller för innehållsfragment:
- Används för att generera scheman när Enabled har aktiverats.
- Ange de datatyper och fält som krävs för GraphQL. De ser till att programmet bara begär det som är möjligt och får det som förväntas.
- Datatypen Fragmentreferenser kan användas i modellen för att referera till ett annat innehållsfragment, vilket innebär att ytterligare strukturnivåer införs.
Fragmentreferenser fragment-references
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.
- När det definieras som en multifeed kan flera delfragment refereras (hämtas) av det primära fragmentet.
JSON Preview json-preview
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.
Använda AEM GraphQL API actually-using-aem-graphiql
Inledande konfiguration initial-setup
Innan du börjar med frågor om ditt innehåll måste du:
-
Aktivera slutpunkten
- Använd Verktyg > Assets > GraphQL
- Aktivera din GraphQL-slutpunkt
-
Åtkomst till GraphiQL (vid behov)
Exempelstruktur sample-structure
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:
-
Företag
- Namn - text
- CEO (Person) - Fragmentreferens
- Anställda (personer) - fragmentreferens(er)
-
Person
- Namn - text
- Förnamn - text
Som du ser refererar fälten CEO och Employees till Personfragmenten.
Fragmentmodellerna används:
- när du skapar innehåll i Content Fragment Editor
- för att generera de GraphQL-scheman som du ska fråga efter
Var ska du testa dina frågor? where-to-test-your-queries
Frågorna kan anges i GraphiQL-gränssnittet, till exempel:
http://localhost:4502/aem/graphiql.html
Komma igång med frågor getting-Started-with-queries
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:
- Lär dig använda GraphQL med AEM
- Strukturen för exempelinnehållsfragment
- Lära sig använda GraphQL med AEM - exempelinnehåll och frågor
What's Next whats-next
Nu när du har lärt dig hur du får åtkomst till och frågar efter rubriklöst innehåll med det AEM GraphQL API kan du nu lära dig hur du använder REST API för att få åtkomst till och uppdatera innehållet i dina innehållsfragment.
Ytterligare resurser additional-resources
-
Lära sig använda GraphQL med AEM - exempelinnehåll och frågor
-
Aktivera funktionen för innehållsfragment i konfigurationsläsaren
-
Komma igång med AEM Headless - En kort videosjälvstudiekurs med en översikt över hur du använder AEM headless-funktioner, inklusive innehållsmodellering och GraphQL.