Begrijpen Sling Model Exporter
- Onderwerpen:
- API's
Gemaakt voor:
- Beginner
- Ontwikkelaar
Apache Sling Models 1.3.0 introduceert Sling Model Exporter , een elegante manier om Sling Model -objecten te exporteren of van serienummering te voorzien in aangepaste abstracties. In dit artikel wordt naast het traditionele gebruik van Sling Models voor het vullen van HTML-scripts ook gebruikgemaakt van het Sling Model Exporter -framework om een Sling Model -script te serialiseren in JSON.
Traditioneel verkoopmodel HTTP-aanvraagstroom
Het traditionele gebruik-geval voor Sling Models is een bedrijfsabstractie voor een middel of een verzoek te verstrekken, dat de manuscripten van HTML (of, eerder JSPs) een interface voor de toegang tot van bedrijfsfuncties verstrekt.
Er ontwikkelen zich gemeenschappelijke patronen Sling Models die AEM Componenten of Pagina's vertegenwoordigen, en het gebruiken van de Sling Model voorwerpen om de manuscripten van HTML met gegevens te voorzien, met een eindresultaat van HTML die in browser wordt getoond.
Verzendmodel HTTP-aanvraagstroom
-
HTTP GET Er wordt een aanvraag ingediend voor een resource in AEM.
Voorbeeld:
HTTP GET /content/my-resource.html
-
Op basis van de
sling:resourceType
-bron van de aanvraag wordt het juiste script opgelost. -
Het script past de aanvraag of bron aan de gewenste Sling Model aan.
-
Het script gebruikt het Sling Model -object om de HTML-uitvoering te genereren.
-
De HTML die door het Manuscript wordt geproduceerd is teruggekeerd in de Reactie van HTTP.
Dit traditionele patroon werkt goed bij het genereren van HTML, aangezien de Sling Model eenvoudig via HTML kan worden gebruikt. Het maken van meer gestructureerde gegevens, zoals JSON of XML, is een veel lastiger zaak, omdat HTML zich niet automatisch leent aan de definitie van deze indelingen.
Sling Model Exporter HTTP-aanvraagstroom
Apache Sling Model Exporter wordt geleverd met een bij Sling geleverde Jackson Exporter die een "gewoon" Sling Model -object automatisch serialiseert in JSON. De Jackson Exporter, die behoorlijk configureerbaar is, inspecteert bij zijn kern het Sling Model voorwerp, en produceert JSON gebruikend om het even welke "getter"methodes als sleutels JSON, en de getter terugkeerwaarden als waarden JSON.
Door de directe serialisatie van Sling Models kunnen ze zowel normale webverzoeken uitvoeren met hun HTML-reacties die zijn gemaakt met de traditionele Sling Model request-flow (zie boven), als JSON-uitvoeringen die kunnen worden gebruikt door webservices of JavaScript-toepassingen, beschikbaar maken.
Deze stroom beschrijft de stroom gebruikend verstrekt Jackson Exporter om output te produceren JSON. Het gebruik van douaneExporteurs volgt de zelfde stroom maar met hun outputformaat.
-
HTTP-GET-aanvraag wordt ingediend voor een bron in AEM met de kiezer en de extensie die zijn geregistreerd bij de Exporter van Sling Model .
Voorbeeld:
HTTP GET /content/my-resource.model.json
-
Bij Sling worden de
sling:resourceType
, de kiezer en de extensie van de aangevraagde bron omgezet in een dynamisch gegenereerde Sling Exporter Servlet, die aan de Sling Model wordt toegewezen met Exporter. -
De opgeloste Sling Exporter Servlet roept Sling Model Exporter tegen het Sling Model voorwerp aan dat van het verzoek of de middel wordt aangepast (zoals die door de Verschuivende Modellen aanpassingstabellen wordt bepaald).
-
De exportfunctie serialiseert de Sling Model op basis van de opmerkingen Exporter Options en Exporter-specific Sling Model en retourneert het resultaat naar Sling Exporter Servlet.
-
De Sling Exporter Servlet keert de JSON vertoning van Sling Model in de Reactie van HTTP terug.