Cómo actualizar su contenido a través de las API de AEM Assets

En esta parte del AEM Recorrido para desarrolladores sin encabezado, aprende a utilizar la API de REST para acceder y actualizar el contenido de sus fragmentos de contenido.

La historia hasta ahora

En el documento anterior del recorrido sin AEM encabezado, Cómo acceder al contenido a través de las API de envío de AEM, ha aprendido a acceder al contenido sin encabezado en AEM a través de la API de AEM GraphQL y ahora debería:

  • Conocer GraphQL de alto nivel.
  • Comprender cómo funciona la API de AEM GraphQL.
  • Comprender algunas consultas de ejemplo prácticas.

Este artículo se basa en estos aspectos básicos para que pueda comprender cómo actualizar el contenido sin encabezado existente en AEM a través de la API de REST.

Objetivo

  • Audiencia: Avanzadas
  • Objetivo: Aprenda a utilizar la API de REST para acceder y actualizar el contenido de los fragmentos de contenido:
    • Introduzca la API HTTP de AEM Assets.
    • Presente y discuta la compatibilidad con fragmentos de contenido en la API.
    • Ilustrar detalles de la API.

¿Por qué se necesita la API HTTP de recursos para el fragmento de contenido?

En la fase anterior del Recorrido sin encabezado, ha aprendido a utilizar la API de AEM GraphQL para recuperar el contenido mediante consultas.

Entonces, ¿por qué se necesita otra API?

La API HTTP de Assets le permite Leer su contenido, pero también le permite Crear, Actualizar y Eliminar contenido: acciones que no son posibles con la API de GraphQL.

La API de REST de Assets está disponible en cada instalación predeterminada de una versión reciente de Adobe Experience Manager as a Cloud Service.

API de HTTP de Assets

La API HTTP de recursos incluye:

  • API de REST de recursos
  • incluida la compatibilidad con fragmentos de contenido

La implementación actual de la API HTTP de Assets se basa en el estilo arquitectónico REST y le permite acceder al contenido (almacenado en AEM) mediante operaciones CRUD (Crear, Leer, Actualizar, Eliminar).

Con estas operaciones, la API le permite operar Adobe Experience Manager as a Cloud Service como un CMS sin encabezado (Content Management System) al proporcionar Content Services a una aplicación front-end de JavaScript. O cualquier otra aplicación que pueda ejecutar solicitudes HTTP y gestionar respuestas JSON. Por ejemplo, las aplicaciones de una sola página (SPA), basadas en marcos o personalizadas, requieren contenido proporcionado a través de una API, a menudo en formato JSON.

API HTTP de recursos y fragmentos de contenido

Los fragmentos de contenido se utilizan para envíos sin encabezado y un fragmento de contenido es un tipo especial de recurso. Se utilizan para acceder a datos estructurados, como textos, números, fechas, entre otros.

Uso de la API de REST de Assets

Acceso

La API de REST de recursos utiliza el extremo /api/assets y requiere la ruta del recurso para acceder a él (sin el /content/dam inicial).

  • Esto significa que para acceder al recurso en:
    • /content/dam/path/to/asset
  • Debe solicitar:
    • /api/assets/path/to/asset

Por ejemplo, para acceder a /content/dam/wknd/en/adventures/cycling-tuscany, solicite /api/assets/wknd/en/adventures/cycling-tuscany.json

NOTA

Acceso:

  • /api/assets no necesita el uso del .model selector.
  • /content/path/to/page ​requiere el uso del .model selector.

Operación

El método HTTP determina la operación que se va a ejecutar:

  • GET : para recuperar una representación JSON de un recurso o una carpeta
  • POST : para crear nuevos recursos o carpetas
  • PUT : para actualizar las propiedades de un recurso o una carpeta
  • DELETE : para eliminar un recurso o una carpeta
NOTA

Los parámetros del cuerpo de la solicitud o de la URL se pueden usar para configurar algunas de estas operaciones; por ejemplo, defina que una carpeta o un recurso deben crearse mediante una solicitud POST.

El formato exacto de las solicitudes admitidas se define en la documentación de referencia de la API.

El uso puede variar en función de si utiliza un entorno de publicación o autor de AEM, junto con su caso de uso específico.

  • Se recomienda encarecidamente que la creación esté vinculada a una instancia de autor (y actualmente no hay forma de replicar un fragmento para publicarlo con esta API).

  • La entrega es posible desde ambos, ya AEM sirve contenido solicitado solo en formato JSON.

    • El almacenamiento y el envío desde una instancia de autor AEM deben ser suficientes para las aplicaciones de biblioteca multimedia y detrás del firewall.

    • Para la entrega web activa, se recomienda una instancia de publicación AEM.

PRECAUCIÓN

La configuración de Dispatcher en AEM instancias de nube podría bloquear el acceso a /api.

NOTA

Para obtener más información, consulte la Referencia de API. En concreto, API de Adobe Experience Manager Assets - Fragmentos de contenido.

Lectura/Entrega

El uso se realiza mediante:

GET /{cfParentPath}/{cfName}.json

Por ejemplo:

http://<host>/api/assets/wknd/en/adventures/cycling-tuscany.json

La respuesta es un archivo JSON serializado con el contenido estructurado como en el fragmento de contenido. Las referencias se envían como direcciones URL de referencia.

Se pueden realizar dos tipos de operaciones de lectura:

  • Al leer un fragmento de contenido específico por ruta, esto devuelve la representación JSON del fragmento de contenido.
  • Leer una carpeta de fragmentos de contenido por ruta: esto devuelve las representaciones JSON de todos los fragmentos de contenido de la carpeta.

Crear

El uso se realiza mediante:

POST /{cfParentPath}/{cfName}

El cuerpo debe contener una representación JSON del fragmento de contenido que se va a crear, incluido cualquier contenido inicial que se deba configurar en los elementos del fragmento de contenido. Es obligatorio establecer la propiedad cq:model y debe apuntar a un modelo de fragmento de contenido válido. Si no lo hace, se producirá un error. También es necesario agregar un encabezado Content-Type que esté configurado como application/json.

Actualizar

El uso se realiza mediante

PUT /{cfParentPath}/{cfName}

El cuerpo debe contener una representación JSON de lo que se debe actualizar para el fragmento de contenido determinado.

Puede ser simplemente el título o la descripción de un fragmento de contenido, o un solo elemento, o todos los valores o metadatos de elementos.

Eliminar

El uso se realiza mediante:

DELETE /{cfParentPath}/{cfName}

Para obtener más información sobre el uso de la API REST de AEM Assets, puede hacer referencia a:

  • API HTTP de Adobe Experience Manager Assets (recursos adicionales)
  • Compatibilidad con fragmentos de contenido en la API HTTP de AEM Assets (recursos adicionales)

Siguientes pasos

Ahora que ha completado esta parte del Recorrido para desarrolladores sin encabezado de AEM, debe:

  • Comprender los conceptos básicos de la API HTTP de AEM Assets.
  • Comprenda cómo se admiten los fragmentos de contenido en esta API.

Debería continuar con su recorrido sin AEM al revisar el documento How to Go Live with Your Headless Application en el que realmente se lleva su proyecto sin encabezado de AEM.

Recursos adicionales

En esta página