Nesta parte do AEM Jornada de desenvolvedor sem periféricos, você pode aprender a usar consultas GraphQL para acessar o conteúdo dos Fragmentos de conteúdo e alimentá-lo em seu aplicativo (entrega sem cabeçalho).
No documento anterior da jornada sem cabeçalho AEM, Como modelar seu conteúdo você aprendeu as noções básicas da modelagem de conteúdo no AEM, então agora deve entender como modelar sua estrutura de conteúdo e, em seguida, perceber essa estrutura usando AEM Modelos de fragmento de conteúdo e Fragmentos de conteúdo:
Este artigo se baseia nesses fundamentos para que você entenda como acessar o conteúdo headless existente no AEM usando a API GraphQL AEM.
Então…você tem todo esse conteúdo, perfeitamente estruturado (em Fragmentos de conteúdo) e apenas esperando para alimentar seu novo aplicativo. A questão é: como chegar lá?
O que você precisa é de uma maneira de direcionar conteúdo específico, selecionar o que precisa e retorná-lo ao seu aplicativo para processamento adicional.
Com o Adobe Experience Manager (AEM), é possível acessar seletivamente os Fragmentos de conteúdo, usando a API GraphQL AEM, para retornar somente o conteúdo necessário. Isso significa que você pode realizar a entrega sem interface de conteúdo estruturado para uso em seus aplicativos.
AEM API GraphQL é uma implementação personalizada, com base na especificação da API GraphQL padrão.
GraphQL é uma especificação de código aberto que fornece:
GraphQL é um strong API digitada. Isso significa que all o conteúdo deve ser claramente estruturado e organizado por tipo, de modo que GraphQL entendimento o que acessar e como. Os campos de dados são definidos em esquemas GraphQL, que definem a estrutura dos objetos de conteúdo.
Os pontos de extremidade GraphQL fornecem os caminhos que respondem às consultas GraphQL.
Tudo isso significa que seu aplicativo pode selecionar com precisão, confiabilidade e eficiência o conteúdo de que precisa - exatamente o que você precisa quando usado com o AEM.
Consulte GraphQL.org e GraphQL.com.
A API GraphQL da AEM é uma versão personalizada baseada na especificação GraphQL da API padrão, especialmente configurada para permitir a execução de consultas (complexas) nos Fragmentos de conteúdo.
Fragmentos de conteúdo são usados, pois o conteúdo é estruturado de acordo com Modelos de fragmento de conteúdo. Isso atende a um requisito básico do GraphQL.
Para realmente acessar GraphQL para AEM (e o conteúdo), um ponto de extremidade é usado para fornecer o caminho de acesso.
O conteúdo retornado, por meio da API GraphQL da AEM, pode ser usado pelos seus aplicativos.
Para ajudá-lo a inserir diretamente e testar consultas, uma implementação da interface GraphiQL padrão também está disponível para uso com AEM GraphQL (isso pode ser instalado com AEM). Ele fornece recursos como realce de sintaxe, preenchimento automático, sugestão automática, juntamente com um histórico e documentação online.
A implementação da API GraphQL do AEM é baseada nas bibliotecas GraphQL do Java.
Os Fragmentos de conteúdo podem ser usados como base para GraphQL para AEM schemas e consultas como:
Esses Modelos de fragmento de conteúdo:
A Referência do fragmento:
É um tipo de dados específico disponível ao definir um Modelo de fragmento de conteúdo.
Faz referência a outro fragmento, dependente de um Modelo de fragmento de conteúdo específico.
Permite criar e recuperar dados estruturados.
Para ajudar na criação e desenvolvimento dos Modelos de fragmento de conteúdo, é possível visualizar a saída JSON no Editor de fragmento de conteúdo.
Antes de começar com queries no seu conteúdo, você precisa:
Ativar o terminal
Instalar GraphiQL (se necessário)
Para realmente usar a API GraphQL AEM em uma consulta, podemos usar as duas estruturas muito básicas do Modelo de fragmento de conteúdo:
Como é possível ver, os campos CEO e Employees fazem referência aos fragmentos Pessoa.
Os modelos de fragmento serão usados:
As consultas podem ser inseridas na interface GraphiQL, por exemplo, em:
http://localhost:4502/content/graphiql.html
Uma consulta simples é retornar o nome de todas as entradas no schema Empresa. Aqui você solicita uma lista de todos os nomes de empresas:
query {
companyList {
items {
name
}
}
}
Uma consulta um pouco mais complexa é selecionar todas as pessoas que não têm o nome de "Trabalhos". Isso filtrará todas as pessoas para qualquer pessoa que não tenha o nome Trabalhos. Isso é feito com o operador EQUALS_NOT (há muito mais):
query {
personList(filter: {
name: {
_expressions: [
{
value: "Jobs"
_operator: EQUALS_NOT
}
]
}
}) {
items {
name
firstName
}
}
}
Você também pode criar consultas mais complexas. Por exemplo, consulte todas as empresas que tenham pelo menos um funcionário com o nome de "Smith". Esta consulta ilustra a filtragem de qualquer pessoa com o nome "Smith", retornando informações de todos os fragmentos aninhados:
query {
companyList(filter: {
employees: {
_match: {
name: {
_expressions: [
{
value: "Smith"
}
]
}
}
}
}) {
items {
name
ceo {
name
firstName
}
employees {
name
firstName
}
}
}
}
Para obter todos os detalhes sobre o uso da API GraphQL da AEM, juntamente com a configuração dos elementos necessários, é possível fazer referência a:
Agora que você aprendeu a acessar e consultar o conteúdo sem periféricos usando a API GraphQL AEM, agora é possível saiba como usar a REST API para acessar e atualizar o conteúdo dos Fragmentos de conteúdo.