Explorar APIs do GraphQL explore-graphql-apis
A API do GraphQL do AEM fornece uma linguagem de consulta poderosa para expor dados de Fragmentos de conteúdo para aplicativos downstream. Os modelos de Fragmento de conteúdo definem o esquema de dados usado pelos Fragmentos de conteúdo. Sempre que um modelo de fragmento de conteúdo é criado ou atualizado, o esquema é traduzido e adicionado ao "gráfico" que compõe a API do GraphQL.
Neste capítulo, vamos explorar algumas consultas comuns do GraphQL para coletar conteúdo usando um IDE chamado GraphiQL. O GraphiQL IDE permite testar e refinar rapidamente as consultas e os dados retornados. Ele também fornece acesso fácil à documentação, facilitando o aprendizado e a compreensão de quais métodos estão disponíveis.
Pré-requisitos prerequisites
Este é um tutorial de várias partes e presume-se que as etapas descritas em Criação de fragmentos de conteúdo foram concluídas.
Objetivos objectives
- Saiba como usar a ferramenta GraphiQL para criar uma consulta usando a sintaxe do GraphQL.
- Saiba como consultar uma lista de fragmentos de conteúdo e um único fragmento de conteúdo.
- Saiba como filtrar e solicitar atributos de dados específicos.
- Saiba como unir uma consulta de vários modelos de Fragmento de conteúdo
- Saiba como criar uma consulta persistente do GraphQL.
Habilitar endpoint GraphQL enable-graphql-endpoint
Um endpoint do GraphQL deve ser configurado para habilitar consultas da API do GraphQL para Fragmentos de conteúdo.
-
Na tela inicial do AEM, navegue até Ferramentas > Geral > GraphQL.
-
Toque em Criar no canto superior direito. Na caixa de diálogo resultante, insira os seguintes valores:
- Nome*: Meu Ponto De Extremidade Do Projeto.
- Usar esquema do GraphQL fornecido por… *: Meu projeto
Toque em Criar para salvar o ponto de extremidade.
Os endpoints do GraphQL criados com base em uma configuração de projeto só permitem consultas em modelos que pertencem a esse projeto. Nesse caso, as únicas consultas nos modelos Pessoa e Equipe podem ser usadas.
note note NOTE Um endpoint global também pode ser criado para permitir consultas em modelos de várias configurações. Isso deve ser usado com cuidado, pois pode gerar vulnerabilidades de segurança adicionais no ambiente e aumentar a complexidade geral no gerenciamento do AEM. -
Agora você deve ver um endpoint do GraphQL habilitado no seu ambiente.
Uso do GraphiQL IDE
A ferramenta GraphiQL permite que os desenvolvedores criem e testem consultas em relação ao conteúdo no ambiente AEM atual. A ferramenta GraphiQL também permite que os usuários persistam ou salvem consultas para serem usadas por aplicativos clientes em uma configuração de produção.
Em seguida, explore o poder da API GraphQL do AEM usando o IDE GraphiQL integrado.
-
Na tela inicial do AEM, navegue até Ferramentas > Geral > Editor de Consultas do GraphQL.
note note NOTE No, as versões mais antigas do AEM no GraphiQL IDE podem não ser incorporadas. Ele pode ser instalado manualmente seguindo estas instruções. -
No canto superior direito, verifique se a Extremidade está definida como Meu Ponto de Extremidade do Projeto.
Isto irá analisar todas as consultas para modelos criados no projeto Meu Projeto.
Consultar uma lista de fragmentos de conteúdo query-list-cf
Um requisito comum é consultar vários fragmentos de conteúdo.
-
Cole a seguinte consulta no painel principal (substituindo a lista de comentários):
code language-graphql query allTeams { teamList { items { _path title } } }
-
Pressione o botão Reproduzir no menu superior para executar a consulta. Você deve ver os resultados dos fragmentos de conteúdo do capítulo anterior:
-
Posicione o cursor abaixo do texto
title
e insira CTRL+Espaço para acionar a referência de código. Adicionarshortname
edescription
à consulta. -
Execute a consulta novamente pressionando o botão Reproduzir e você verá que os resultados incluem as propriedades adicionais de
shortname
edescription
.O
shortname
é uma propriedade simples edescription
é um campo de texto multilinha e a API do GraphQL nos permite escolher vários formatos para os resultados, comohtml
,markdown
,json
ouplaintext
.
Consulta de fragmentos aninhados
Em seguida, o experimento com a consulta está recuperando fragmentos aninhados, lembre-se de que o modelo Equipe faz referência ao modelo Pessoa.
-
Atualize a consulta para incluir a propriedade
teamMembers
. Lembre-se de que este é um campo Referência de fragmento para o modelo de pessoa. As propriedades do modelo de Pessoa podem ser retornadas:code language-graphql query allTeams { teamList { items { _path title shortName description { plaintext } teamMembers { fullName occupation } } } }
Resposta JSON:
code language-json { "data": { "teamList": { "items": [ { "_path": "/content/dam/my-project/en/team-alpha", "title": "Team Alpha", "shortName": "team-alpha", "description": { "plaintext": "This is a description of Team Alpha!" }, "teamMembers": [ { "fullName": "John Doe", "occupation": [ "Artist", "Influencer" ] }, { "fullName": "Alison Smith", "occupation": [ "Photographer" ] } ] } ] } } }
A capacidade de consultar em fragmentos aninhados é um recurso eficiente da API GraphQL do AEM. Neste exemplo simples, o aninhamento tem apenas dois níveis de profundidade. No entanto, é possível aninhar fragmentos ainda mais. Por exemplo, se houvesse um modelo Endereço associado a uma Pessoa, seria possível retornar dados de todos os três modelos em uma única consulta.
Filtrar uma lista de fragmentos de conteúdo filter-list-cf
Em seguida, vamos analisar como é possível filtrar os resultados para um subconjunto de Fragmentos de conteúdo com base em um valor de propriedade.
-
Insira a seguinte consulta na interface do GraphiQL:
code language-graphql query personByName($name:String!){ personList( filter:{ fullName:{ _expressions:[{ value:$name _operator:EQUALS }] } } ){ items{ _path fullName occupation } } }
A consulta acima executa uma pesquisa em relação a todos os fragmentos de Pessoa no sistema. O filtro adicionado ao início da consulta executa uma comparação no campo
name
e na cadeia de caracteres da variável$name
. -
No painel Variáveis de consulta, insira o seguinte:
code language-json {"name": "John Doe"}
-
Execute a consulta. Espera-se que somente o Fragmento de conteúdo Pessoas seja retornado com um valor de
John Doe
.Há muitas outras opções para filtrar e criar consultas complexas, consulte Aprendendo a usar o GraphQL com AEM - Exemplos de conteúdo e consultas.
-
Aprimorar a consulta acima para obter a foto do perfil
code language-graphql query personByName($name:String!){ personList( filter:{ fullName:{ _expressions:[{ value:$name _operator:EQUALS }] } } ){ items{ _path fullName occupation profilePicture{ ... on ImageRef{ _path _authorUrl _publishUrl height width } } } } }
O
profilePicture
é uma referência de conteúdo e espera-se que seja uma imagem, portanto, o objetoImageRef
interno é usado. Isso nos permite solicitar dados adicionais sobre a imagem que está sendo referenciada, comowidth
eheight
.
Consultar um único fragmento de conteúdo query-single-cf
Também é possível consultar diretamente um único Fragmento do conteúdo. O conteúdo no AEM é armazenado em uma forma hierárquica e o identificador exclusivo de um fragmento se baseia no caminho do fragmento.
-
Insira a seguinte consulta no editor de GraphiQL:
code language-graphql query personByPath($path: String!) { personByPath(_path: $path) { item { fullName occupation } } }
-
Insira o seguinte para as Variáveis de consulta:
code language-json {"path": "/content/dam/my-project/en/alison-smith"}
-
Execute a consulta e observe que o único resultado é retornado.
Consultas persistentes persist-queries
Quando um desenvolvedor estiver satisfeito com a consulta e os dados de resultado retornados, a próxima etapa é armazenar ou persistir a consulta para AEM. As Consultas persistentes são o mecanismo preferido para expor a API do GraphQL a aplicativos clientes. Depois que uma consulta for persistente, ela poderá ser solicitada usando uma solicitação do GET e armazenada em cache nas camadas do Dispatcher e do CDN. O desempenho das consultas persistentes é muito melhor. Além dos benefícios de desempenho, as consultas persistentes garantem que os dados extras não sejam expostos acidentalmente aos aplicativos clientes. Mais detalhes sobre Consultas persistentes podem ser encontrados aqui.
Em seguida, se as duas consultas simples persistirem, elas serão usadas no próximo capítulo.
-
Insira a seguinte consulta no GraphiQL IDE:
code language-graphql query allTeams { teamList { items { _path title shortName description { plaintext } teamMembers { fullName occupation } } } }
Verifique se o query funciona.
-
Toque em Salvar como e insira
all-teams
como o Nome da consulta.A consulta deve ser exibida em Consultas persistentes no painel esquerdo.
-
Em seguida, toque nas reticências … ao lado da consulta persistente e toque em Copiar URL para copiar o caminho para a área de transferência.
-
Abra uma nova guia e cole o caminho copiado no navegador:
code language-plain https://$YOUR-AEMasCS-INSTANCEID$.adobeaemcloud.com/graphql/execute.json/my-project/all-teams
Deve ser semelhante ao caminho acima. Você deve ver que os resultados JSON da consulta retornaram.
Analisando o URL acima:
table 0-row-2 1-row-2 2-row-2 3-row-2 Nome Descrição /graphql/execute.json
Ponto de acesso da consulta persistente /my-project
Configuração de projeto para /conf/my-project
/all-teams
Nome da consulta persistente -
Retorne ao GraphiQL IDE e use o botão de adição + para criar a consulta persistente NEW
code language-graphql query personByName($name: String!) { personList( filter: { fullName:{ _expressions: [{ value: $name _operator:EQUALS }] } }){ items { _path fullName occupation biographyText { json } profilePicture { ... on ImageRef { _path _authorUrl _publishUrl width height } } } } }
-
Salve a consulta como:
person-by-name
. -
Você deve ter duas consultas persistentes salvas:
Endpoint do Publish GraphQL e consultas persistentes
Após a revisão e verificação, publique os GraphQL Endpoint
e Persisted Queries
-
Na tela inicial do AEM, navegue até Ferramentas > Geral > GraphQL.
-
Toque na caixa de seleção ao lado de Meu Ponto de Extremidade do Projeto e toque em Publish
-
Na tela inicial do AEM, navegue até Ferramentas > Geral > Editor de consultas do GraphQL
-
Toque na consulta todas as equipes do painel Consultas persistentes e toque em Publish
-
Repita a etapa acima para a consulta
person-by-name
Arquivos de solução solution-files
Baixe o conteúdo, os modelos e as consultas persistentes criadas nos últimos três capítulos: basic-tutorial-solution.content.zip
Recursos adicionais
Saiba mais sobre as consultas do GraphQL em Aprendendo a usar o GraphQL com AEM - Conteúdo de amostra e consultas.
Parabéns. congratulations
Parabéns, você criou e executou várias consultas do GraphQL.
Próximas etapas next-steps
No próximo capítulo, Criar aplicativo React, você explora como um aplicativo externo pode consultar os endpoints do AEM GraphQL e usar essas duas consultas persistentes. Você também está familiarizado com o tratamento básico de erros durante a execução de consultas do GraphQL.
Instalar a ferramenta GraphiQL (opcional) install-graphiql
No, algumas versões do AEM (6.X.X) da ferramenta GraphiQL IDE precisam ser instaladas manualmente. Use as instruções aqui.