En esta parte del Recorrido para desarrolladores de contenido de AEM sin encabezado, puede aprender a utilizar las consultas de GraphQL para acceder al contenido de sus fragmentos de contenido y alimentarlo en su aplicación (entrega sin encabezado).
En el documento anterior del recorrido sin encabezado de AEM, Cómo modelar el contenido, ha aprendido los conceptos básicos del modelado de contenido en AEM, por lo que ahora debe comprender cómo modelar la estructura de contenido y, a continuación, comprender dicha estructura utilizando modelos de fragmentos de contenido de AEM y los fragmentos de contenido.
Este artículo se centra en estos aspectos básicos para que entienda cómo acceder al contenido sin encabezado existente en AEM mediante GraphQL, la API de AEM.
Así que tiene mucho contenido bien estructurado (en fragmentos de contenido) para alimentar su nueva aplicación. La pregunta es: ¿cómo lograr eso?
Lo que necesita es una forma de segmentar el contenido específico, seleccionar lo que necesita y devolverlo a su aplicación para un procesamiento posterior.
Con Adobe Experience Manager (AEM) as a Cloud Service, puede acceder de forma selectiva a los fragmentos de contenido mediante la API de AEM, GraphQL, para devolver solo el contenido que necesite. Esto significa que puede realizar entrega de contenido sin encabezado estructurado para utilizarlo en sus aplicaciones.
La API de AEM, GraphQL, es una implementación personalizada, basada en la especificación de la API, GraphQL estándar.
GraphQL es una especificación de código abierto que proporciona lo siguiente:
GraphQL es una API que se organiza totalmente por tipos. Esto significa que todo el contenido debe estar claramente estructurado y organizado por tipo, para que GraphQL entienda a qué acceder y cómo hacerlo. Los campos de datos se definen dentro de esquemas de GraphQL, que definen la estructura de los objetos de contenido.
Los puntos finales de GraphQL proporcionan las rutas que responden a las consultas de GraphQL.
Todo esto significa que la aplicación puede seleccionar de forma precisa, fiable y eficaz el contenido que necesita cuando se utiliza con AEM.
Consulte GraphQL.org y GraphQL.com.
La API de AEM, GraphQL, es una versión personalizada basada en la especificación estándar de la API GraphQL, especialmente configurada para permitirle realizar consultas (complejas) en los fragmentos de contenido.
Se utilizan fragmentos de contenido, ya que el contenido está estructurado según los modelos de fragmento de contenido. Esto cumple un requisito básico de GraphQL.
Para acceder realmente a GraphQL para AEM (y el contenido) se utiliza un punto final para proporcionar la ruta de acceso.
El contenido devuelto, a través de la API de AEM, GraphQL, puede ser utilizado por sus aplicaciones.
Para ayudarle a introducir directamente y probar consultas, también está disponible una implementación de la interfaz estándar de GraphiQL para utilizarse con GraphQL de AEM (esto se puede instalar con AEM). Proporciona funciones como resaltado de sintaxis, autocompletado o autosugerencia, junto con un historial y documentación en línea.
La implementación de la API de AEM, GraphQL, se basa en las bibliotecas Java de GraphQL.
Los fragmentos de contenido se pueden usar como base para GraphQL para esquemas y consultas en AEM, puesto que:
Estos modelos de fragmentos de contenido:
La Referencia de fragmento:
Es un tipo de datos específico disponible cuando se define un modelo de fragmento de contenido.
Hace referencia a otro fragmento, según un modelo de fragmento de contenido específico.
Permite crear y datos estructurados y luego recuperarlos.
Para diseñar y desarrollar los modelos de fragmento de contenido, puede obtener una vista previa de la salida de JSON en el editor de fragmentos de contenido.
Antes de comenzar con consultas sobre el contenido, debe realizar lo siguiente:
Para utilizar GraphQL, la API de AEM en una consulta, podemos utilizar las dos estructuras básicas del modelo de fragmento de contenido:
Como puede ver, los campos CEO y Empleados hacen referencia a los fragmentos Persona.
Se utilizarán los modelos de fragmento:
Las consultas se pueden introducir en la interfaz de GraphiQL. Puede acceder al editor de consultas desde:
http://localhost:4502/aem/graphiql.html
Una consulta sencilla es devolver el nombre de todas las entradas del esquema Compañía. Aquí puede solicitar una lista de todos los nombres de compañía:
query {
companyList {
items {
name
}
}
}
Una consulta un poco más compleja consiste en seleccionar todas las personas que no tengan el nombre de un “Trabajo”. Se filtrarán todas las personas que no tengan el nombre de un “Trabajo”. Esto se logra con el operador EQUALS_NOT (hay muchos más):
query {
personList(filter: {
name: {
_expressions: [
{
value: "Jobs"
_operator: EQUALS_NOT
}
]
}
}) {
items {
name
firstName
}
}
}
También se pueden crear consultas más complejas. Por ejemplo, realizar una consulta de todas las empresas que tengan al menos un empleado con el apellido “Smith”. Esta consulta ilustra el filtrado de cualquier persona con el apellido “Smith”, y devuelve información de todos los fragmentos anidados:
query {
companyList(filter: {
employees: {
_match: {
name: {
_expressions: [
{
value: "Smith"
}
]
}
}
}
}) {
items {
name
ceo {
name
firstName
}
employees {
name
firstName
}
}
}
}
Para obtener información completa sobre el uso de GraphQL, la API de AEM, junto con la configuración de los elementos necesarios, puede consultar lo siguiente:
Ahora que ha aprendido a acceder al contenido sin encabezado y consultarlo mediante la API de AEM GraphQL, puede aprender a utilizar la API REST para acceder al contenido de los fragmentos de contenido y actualizarlo.