Få åtkomst till ditt innehåll via AEM-API:er

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 delivery).

Story hittills

I det föregående dokumentet om den AEM resan utan headless Så här modellerar du 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:

  • 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 du kan förverkliga den här strukturen med AEM Content Fragment Models (och skapa innehåll med Content Fragments).
  • Förstå hur ni modellerar ert innehåll. principer med grundläggande urval.

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 AEM GraphQL API.

  • Målgrupp: Nybörjare
  • Syfte: Lär dig hur du kommer åt innehållet i dina innehållsfragment med AEM GraphQL-frågor:
    • Introducera 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?

Så…har du allt det här innehållet, har en struktur (i innehållsfragment) och väntar bara på att mata in 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 AEM GraphQL API, och bara 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.

OBSERVERA

AEM GraphQL API är en anpassad implementering som baseras på standard-API-specifikationen GraphQL.

GraphQL - en introduktion

GraphQL är en öppen källkodsspecifikation som ger:

  • 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 en starkt typbestämd API. Detta innebär att alla innehållet måste vara tydligt strukturerat och organiserat 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-slutpunkterna tillhandahåller sedan de sökvägar som svarar på GraphQL-frågor.

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.

OBSERVERA

Se GraphQL.org och GraphQL.com.

AEM GraphQL API

AEM GraphQL API är en anpassad version som baseras på standard-specifikationen GraphQL API, 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 ett grundläggande krav i GraphQL.

  • 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 komma åt 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.

En implementering av standardgränssnittet GraphiQL finns också tillgänglig för användning med AEM GraphQL (som kan installeras med AEM), vilket underlättar direkt inmatning och testning av frågor. Den innehåller funktioner som syntaxmarkering, automatisk komplettering, automatisk föreslå, samt historik och onlinedokumentation.

OBSERVERA

Implementeringen AEM GraphQL API baseras på GraphQL Java-biblioteken.

Innehållsfragment för användning med 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

Dessa modeller för innehållsfragment:

  • Används för att generera scheman en gång Aktiverad.
  • 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 din modell för att referera till ett annat innehållsfragment, och därför införs ytterligare strukturnivåer.

Fragmentreferenser

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.

    • Vid definition som multifeed, kan flera delfragment refereras (hämtas) av det primära fragmentet.

JSON Preview

Om du vill ha hjälp med att utforma och utveckla dina modeller för innehållsfragment kan du förhandsgranska JSON-utdata i redigeraren för innehållsfragment.

JSON Preview

Använda AEM GraphQL API

Inledande konfiguration

Innan du börjar med frågor om ditt innehåll måste du:

Exempelstruktur

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?

Frågorna kan anges i GraphiQL-gränssnittet. Du kan öppna frågeredigeraren från:

  • verktyg -> Allmänt -> GraphQL Query Editor
  • direkt, till exempel http://localhost:4502/aem/graphiql.html
GraphiQL-gränssnitt

Komma igång med frågor

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 API:t för AEM GraphQL 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
  • Att lära sig använda GraphQL med AEM - exempelinnehåll och frågor

What's Next

Nu när du har lärt dig hur du får åtkomst till och frågar efter headless-innehåll med AEM GraphQL API kan du nu lära dig hur du använder REST API för att få tillgång till och uppdatera innehållet i dina innehållsfragment.

Ytterligare resurser

På denna sida