AEM Headless SDK
AEM Headless SDK es un conjunto de bibliotecas que los clientes pueden utilizar para interactuar rápida y fácilmente con las API de AEM Headless a través de HTTP.
AEM Headless SDK está disponible para varias plataformas:
Consultas persistentes de GraphQL
Consultar AEM con GraphQL mediante consultas persistentes (a diferencia de consultas de GraphQL definidas por el cliente) permite a los desarrolladores mantener una consulta (pero no sus resultados) en AEM y, a continuación, solicitar que la consulta se ejecute por nombre. Las consultas persistentes son similares al concepto de procedimientos almacenados en bases de datos SQL.
Las consultas persistentes tienen un mayor rendimiento que las consultas GraphQL definidas por el cliente, ya que las consultas persistentes se ejecutan mediante HTTP GET, que puede almacenarse en caché en los niveles CDN y AEM Dispatcher. Las consultas persistentes también están en vigor, definen una API y desvinculan la necesidad de que el desarrollador comprenda los detalles de cada modelo de fragmento de contenido.
Ejemplos de código persisted-graphql-queries-code-examples
A continuación se muestran ejemplos de código de cómo ejecutar una consulta persistente de GraphQL contra AEM.
Instale @adobe/aem-headless-client-js ejecutando el comando npm install
desde la raíz de su proyecto Node.js.
code language-none |
---|
|
Este ejemplo de código muestra cómo consultar AEM usando el módulo @adobe/aem-headless-client-js npm con sintaxis async/await
. AEM Headless SDK for JavaScript también admite Sintaxis de promesas.
Este código supone que se ha creado una consulta persistente con el nombre wknd/adventureNames
en AEM Author y que se ha publicado en AEM Publish.
code language-javascript |
---|
|
Instale @adobe/aem-headless-client-js ejecutando el comando npm install
desde la raíz del proyecto React.
code language-none |
---|
|
En este ejemplo de código se muestra cómo utilizar el enlace React useEffect(…) para ejecutar una llamada asincrónica a AEM GraphQL.
El uso de useEffect
para realizar la llamada asincrónica de GraphQL en React resulta útil porque:
- Proporciona un contenedor sincrónico para la llamada asincrónica a AEM.
- Reduce la necesidad de volver a consultar AEM.
Este código supone que se ha creado una consulta persistente con el nombre wknd-shared/adventure-by-slug
en AEM Author y que se ha publicado en AEM Publish mediante GraphiQL.
code language-javascript |
---|
|
Invoque el vínculo React useEffect
personalizado desde cualquier parte de un componente React.
code language-javascript |
---|
|
Se pueden crear nuevos vínculos useEffect
para cada consulta persistente que use la aplicación React.
Consultas de GraphQL
AEM admite consultas GraphQL AEM definidas por el cliente, pero es recomendable que use consultas GraphQL persistentes.
Webpack 5+
El SDK de JS sin encabezado de AEM tiene dependencias en util
que no se incluye en Webpack 5+ de forma predeterminada. Si utiliza Webpack 5+ y recibe el siguiente error:
Compiled with problems:
× ERROR in ./node_modules/@adobe/aio-lib-core-errors/src/AioCoreSDKErrorWrapper.js 12:13-28
Module not found: Error: Can't resolve 'util' in '/Users/me/Code/wknd-headless-examples/node_modules/@adobe/aio-lib-core-errors/src'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "util": require.resolve("util/") }'
- install 'util'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "util": false }
Agregue el(la) siguiente devDependencies
a su archivo package.json
:
"devDependencies": {
"buffer": "npm:buffer@^6.0.3",
"crypto": "npm:crypto-browserify@^3.12.0",
"http": "npm:stream-http@^3.2.0",
"https": "npm:https-browserify@^1.0.0",
"stream": "npm:stream-browserify@^3.0.0",
"util": "npm:util@^0.12.5",
"zlib": "npm:browserify-zlib@^0.2.0"
},
A continuación, ejecute npm install
para instalar las dependencias.