Comprendre Sling Model Exporter

Apache Sling Models 1.3.0 introduit Sling Model Exporter, un moyen élégant d’exporter ou de sérialiser des objets Sling Model dans des abstractions personnalisées. Cet article juxtapose le cas d’utilisation traditionnel de l’utilisation de Sling Models pour renseigner des scripts HTL, en exploitant la structure Sling Model Exporter pour sérialiser un Sling Model dans JSON.

Flux de requête HTTP de modèle Sling traditionnel

Le cas d'utilisation traditionnel de Sling Models consiste à fournir une abstraction commerciale pour une ressource ou une requête, qui fournit des scripts HTL (ou, précédemment, JSP) une interface pour l'accès aux fonctions métier.

Les modèles courants sont le développement de Sling Models qui représentent AEM Composants ou Pages, et l'utilisation des objets Sling Model pour alimenter les scripts HTL avec des données, avec un résultat final de HTML affiché dans le navigateur.

Flux de requête HTTP de modèle Sling

Flux de demande de modèle Sling

  1. HTTP GET Une demande est faite pour une ressource en AEM.

    Exemple: HTTP GET /content/my-resource.html

  2. Selon sling:resourceType de la ressource de requête, le script approprié est résolu.

  3. Le script adapte la requête ou la ressource à Sling Model souhaité.

  4. Le script utilise l’objet Sling Model pour générer le rendu HTML.

  5. Le code HTML généré par le script est renvoyé dans la réponse HTTP.

Ce modèle traditionnel fonctionne bien dans le contexte de la génération de code HTML, car Sling Model peut être facilement exploité via HTL. La création de données plus structurées telles que JSON ou XML est une entreprise beaucoup plus fastidieuse car HTL ne se prête pas naturellement à la définition de ces formats.

Sling Model Exporter Flux de requêtes HTTP

Apache Sling Model Exporter est fourni avec un Sling fourni par Jackson Exporter qui sérialise automatiquement un objet Sling Model "ordinaire" dans JSON. L’exportateur Jackson, bien que configurable, à son coeur inspecte l’objet Sling Model et génère JSON en utilisant toutes les méthodes "getter" comme clés JSON, et les valeurs de retour getter comme valeurs JSON.

La sérialisation directe de Sling Models leur permet de traiter à la fois des requêtes Web normales avec leurs réponses HTML créées à l'aide du flux de requêtes traditionnel Sling Model (voir ci-dessus), mais aussi d'exposer les rendus JSON qui peuvent être utilisés par les services Web ou les applications JavaScript.

Flux de requête HTTP Sling Model Exporter

Ce flux décrit le flux utilisant l’exportateur Jackson fourni pour produire la sortie JSON. L'utilisation d'exportateurs personnalisés suit le même flux mais avec leur format de sortie.

  1. GET HTTP La demande est faite pour une ressource en AEM avec le sélecteur et l’extension enregistrés auprès de l’exportateur Sling Model.

    Exemple: HTTP GET /content/my-resource.model.json

  2. Sling résout le sling:resourceType de la ressource demandée, le sélecteur et l’extension en un servlet Sling Exporter généré de manière dynamique, qui est mappé à Sling Model avec Exporter.

  3. Le servlet Sling Exporter résolu appelle l'Sling Model Exporter par rapport à l'objet Sling Model adapté de la demande ou de la ressource (tel que déterminé par les tables adaptables Sling Models).

  4. L’exportateur sérialise l’Sling Model en fonction des annotations de modèle Sling propres à l’exportateur et renvoie le résultat au servlet Sling Exporter.

  5. Le servlet Sling Exporter renvoie le rendu JSON de Sling Model dans la réponse HTTP.

REMARQUE

Bien que le projet Apache Sling fournisse à Jackson Exporter le numéro de série Sling Models à JSON, la structure Exporter prend également en charge les Exportateurs personnalisés. Par exemple, un projet peut implémenter un Exportateur personnalisé qui sérialise Sling Model dans XML.

REMARQUE

Non seulement Sling Model Exporter sérialise Sling Models, il peut également les exporter en tant qu’objets Java. L’exportation vers d’autres objets Java ne joue pas de rôle dans le flux de requêtes HTTP et n’apparaît donc pas dans le diagramme ci-dessus.

Documents de support

Sur cette page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now