Versión | Vínculo del artículo |
---|---|
AEM as a Cloud Service | Haga clic aquí |
AEM 6.5 | Este artículo |
AEM Obtenga información acerca de la compatibilidad con fragmentos de contenido en la API HTTP de Assets, una parte importante de la función de envío sin encabezado de la aplicación de la interfaz de usuario de.
El API HTTP de Assets incluye:
La implementación actual de la API HTTP de Assets se basa en la variable REST estilo arquitectónico.
El API de REST de Assets permite a los desarrolladores de Adobe Experience Manager AEM acceder al contenido (almacenado en la) directamente a través de la API HTTP, a través de operaciones CRUD (crear, leer, actualizar, eliminar).
La API de le permite utilizar Adobe Experience Manager como un CMS (Sistema de administración de contenido) sin encabezado proporcionando servicios de contenido a una aplicación front-end de JavaScript. O cualquier otra aplicación que pueda ejecutar solicitudes HTTP y gestionar respuestas JSON.
SPA Por ejemplo, las aplicaciones de una sola página (), basadas en un marco de trabajo o personalizadas, requieren contenido proporcionado mediante la API HTTP, a menudo en formato JSON.
While AEM Componentes principales AEM AEM proporcionan una API muy completa, flexible y personalizable que puede servir las operaciones de lectura necesarias para este fin y cuya salida JSON se puede personalizar, requieren conocimientos técnicos de WCM (gestión de contenido web) de la implementación, ya que deben alojarse en páginas basadas en plantillas dedicadas a la. SPA No todas las organizaciones de desarrollo de la tienen acceso directo a esos conocimientos.
Es entonces cuando se puede utilizar la API de REST de Assets. Permite a los desarrolladores acceder a recursos (por ejemplo, imágenes y fragmentos de contenido) directamente, sin necesidad de incrustarlos primero en una página, y enviar su contenido en formato JSON serializado.
No es posible personalizar la salida JSON desde la API de REST de Assets.
La API de REST de Assets también permite a los desarrolladores modificar contenido: creando nuevos recursos, fragmentos de contenido y carpetas, actualizándolos o eliminándolos.
La API de REST de Assets:
sigue al Principio HATEOAS
implementa el Formato de SIRENA
AEM La API de REST de Assets está disponible en cada instalación predeterminada de una versión reciente de un paquete de instalación de la versión de la aplicación de la versión de la aplicación de la aplicación de forma predeterminada.
Las ofertas de API de REST de Assets RESTAEM Acceso de tipo a a recursos almacenados en una instancia de.
Utiliza el /api/assets
punto final y requiere la ruta del recurso para acceder a él (sin el interlineado /content/dam
).
/content/dam/path/to/asset
/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
Acceso:
/api/assets
no necesita el uso del selector .model
./content/path/to/page
sí necesita el uso del selector .model
.El método HTTP determina la operación que se va a ejecutar:
El cuerpo de solicitud o los parámetros de URL se pueden usar para configurar algunas de estas operaciones; por ejemplo, definir que una carpeta o un recurso deben crearse mediante una solicitud POST.
El formato exacto de las solicitudes admitidas se define en la variable Referencia de API documentación.
Todas las solicitudes son atómicas.
Esto significa que los siguientes (write
) las solicitudes no se pueden combinar en una sola transacción que podría realizarse correctamente o fallar como una sola entidad.
Aspecto | La API de REST de Recursos |
AEM Componente (componentes que utilizan modelos Sling) |
Casos de uso admitidos | De uso general. | SPA Optimizado para el consumo en una aplicación de una sola página () o en cualquier otro contexto (consumo de contenido). También puede contener información de diseño. |
Operaciones compatibles | Crear, leer, actualizar, eliminar. Con operaciones adicionales en función del tipo de entidad. |
Solo lectura. |
Acceso | Se puede acceder directamente. Utiliza el Una ruta de ejemplo tendría este aspecto: |
AEM AEM Es necesario hacer referencia a él a través de un componente de la en una página de la aplicación. Utiliza el Una ruta de ejemplo tendría este aspecto: |
Seguridad | Se pueden seleccionar varias opciones. Se propone OAuth; se puede configurar por separado de la configuración estándar. |
AEM Utiliza la configuración estándar. |
Observaciones arquitectónicas | El acceso de escritura normalmente se dirige a una instancia de autor. La lectura también se puede dirigir a una instancia de publicación. |
Como este método es de solo lectura, normalmente se utiliza para instancias de publicación. |
Salida | Salida SIREN basada en JSON: detallada, pero potente. Permite la navegación dentro del contenido. | Salida propia basada en JSON; configurable mediante modelos Sling. La navegación por la estructura de contenido es difícil de implementar (pero no necesariamente imposible). |
AEM Si la API de REST de Assets se utiliza en un entorno sin requisitos de autenticación específicos, es necesario configurar correctamente el filtro CORS de manera que se pueda usar en cualquier momento.
Para obtener más información, consulte lo siguiente:
En entornos con requisitos de autenticación específicos, se recomienda OAuth.
Los fragmentos de contenido son un tipo específico de recurso. Consulte Uso de fragmentos de contenido.
Para obtener más información sobre las funciones disponibles a través de la API, consulte:
La API de REST de Assets admite la paginación (para solicitudes de GET) mediante los parámetros de URL:
offset
: el número de la primera entidad (secundaria) que se va a recuperar.limit
: el número máximo de entidades devueltasLa respuesta contendrá información de paginación como parte de properties
de la salida SIREN. Esta srn:paging
contiene el número total de entidades (secundarias) ( total
), el desplazamiento y el límite ( offset
, limit
) tal como se especifica en la solicitud.
La paginación se aplica normalmente a entidades contenedoras (es decir, carpetas o recursos con representaciones), en lo que se refiere a los elementos secundarios de la entidad solicitada.
GET /api/assets.json?offset=2&limit=3
...
"properties": {
...
"srn:paging": {
"total": 7,
"offset": 2,
"limit": 3
}
...
}
...
Las carpetas actúan como contenedores para recursos y otras carpetas. AEM Reflejan la estructura del repositorio de contenido de la.
La API de REST de Assets expone el acceso a las propiedades de una carpeta; por ejemplo, su nombre, título, etc. Los recursos se exponen como entidades secundarias de carpetas y subcarpetas.
Según el tipo de recurso de los recursos y carpetas secundarios, la lista de entidades secundarias puede contener ya el conjunto completo de propiedades que define la entidad secundaria correspondiente. Alternativamente, solo se puede exponer un conjunto reducido de propiedades para una entidad de esta lista de entidades secundarias.
Si se solicita un recurso, la respuesta devolverá sus metadatos, como título, nombre y otra información definida por el esquema de recursos respectivo.
Los datos binarios de un recurso se exponen como un vínculo SIREN de tipo content
.
Los recursos pueden tener varias representaciones. Normalmente se exponen como entidades secundarias, una excepción es una representación en miniatura, que se expone como un vínculo de tipo thumbnail
( rel="thumbnail"
).
A fragmento de contenido es un tipo especial de recurso. Pueden utilizarse para acceder a datos estructurados, como textos, números, fechas, entre otros.
Dado que existen varias diferencias con standard recursos (como imágenes o audio), se aplican algunas reglas adicionales para administrarlos.
Fragmentos de contenido:
No exponga ningún dato binario.
Están completamente contenidos en la salida JSON (dentro de la variable properties
property).
También se consideran atómicos, es decir, los elementos y las variaciones se exponen como parte de las propiedades del fragmento en lugar de como vínculos o entidades secundarias. Esto permite un acceso eficiente a la carga útil de un fragmento.
Actualmente, los modelos que definen la estructura de un fragmento de contenido no se exponen a través de una API HTTP. Por lo tanto, consumidor necesita conocer el modelo de un fragmento (al menos un mínimo), aunque la mayoría de la información se puede inferir de la carga útil, como tipos de datos, etc. forman parte de la definición de.
Para crear un nuevo fragmento de contenido, se debe proporcionar la ruta (repositorio interno) del modelo.
El contenido asociado no está expuesto actualmente.
El uso puede variar en función de si utiliza un entorno de publicación o autor de AEM, junto con el caso de uso específico.
Se recomienda que la creación esté enlazada a una instancia de autor (y actualmente no hay medios para replicar un fragmento para publicarlo con esta API).
La entrega es posible desde ambos, ya que AEM sirve contenido solicitado solo en formato JSON.
El almacenamiento y el envío desde una instancia de autor de AEM deben ser suficientes para las aplicaciones de la biblioteca de medios, detrás del cortafuegos.
Para la entrega web activa, se recomienda una instancia de publicación de AEM.
AEM La configuración de Dispatcher en instancias de puede bloquear el acceso a /api
.
Para obtener más información, consulte la Referencia de API. En particular, la API de Adobe Experience Manager Assets: fragmentos de contenido.
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:
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 establecer en los elementos del fragmento de contenido. Es obligatorio establecer la propiedad cq:model
y debe señalar a un modelo de fragmento de contenido válido. Si no lo hace, se producirá un error. También es necesario añadir el encabezado Content-Type
que se establece en application/json
.
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 de elementos o metadatos.
El uso se realiza mediante:
DELETE /{cfParentPath}/{cfName}
Hay algunas limitaciones:
Los siguientes códigos de estado se pueden ver en las circunstancias relevantes:
200 (OK) Devuelto cuando:
GET
PUT
201 (Creado) Devuelto cuando:
POST
404 (No encontrado) Devuelto cuando:
500 (Error interno del servidor)
Se devuelve este error:
A continuación se enumeran los escenarios comunes en los que se devuelve este estado de error, junto con el mensaje de error (monoespacio) generado:
La carpeta principal no existe (al crear un fragmento de contenido mediante POST
)
No se ha proporcionado ningún modelo de fragmento de contenido (falta cq:model), no se puede leer (debido a una ruta no válida o a un problema de permisos) o no hay ningún modelo de fragmento válido:
No content fragment model specified
Cannot create a resource of given model '/foo/bar/qux'
No se ha podido crear el fragmento de contenido (potencialmente un problema de permisos):
Could not create content fragment
No se han podido actualizar el título o la descripción:
Could not set value on content fragment
No se pudieron establecer los metadatos:
Could not set metadata on content fragment
El elemento de contenido no se ha podido encontrar o actualizar
Could not update content element
Could not update fragment data of element
Los mensajes de error detallados suelen devolverse de la siguiente manera:
{
"class": "core/response",
"properties": {
"path": "/api/assets/foo/bar/qux",
"location": "/api/assets/foo/bar/qux.json",
"parentLocation": "/api/assets/foo/bar.json",
"status.code": 500,
"status.message": "...{error message}.."
}
}
Consulte aquí las referencias detalladas de la API:
Para obtener más información, consulte lo siguiente: