Förstå Sling Model Exporter

Apache Sling Models 1.3.0 introducerar Sling Model Exporter, ett elegant sätt att exportera eller serialisera Sling Model objekt till anpassade abstraktioner. I den här artikeln beskrivs det traditionella användningsfallet för Sling Models för att fylla i HTML-skript, med användning av Sling Model Exporter-ramverket för att serialisera Sling Model till JSON.

Traditionellt HTTP-begäranflöde för segmenteringsmodell

Traditionellt användningsfall för Sling Models är att tillhandahålla en affärsabstraktion för en resurs eller begäran, som tillhandahåller HTML-skript (eller tidigare JSP-skript) som ett gränssnitt för åtkomst till affärsfunktioner.

Vanliga mönster utvecklar Sling Models som representerar AEM komponenter eller sidor och använder Sling Model-objekten för att mata in HTML-skripten med data, med slutresultatet HTML som visas i webbläsaren.

Sling Model - flöde för HTTP-begäran

Förfrågningsflöde för segmenteringsmodell

  1. HTTP GET-begäran görs för en resurs i AEM.

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

  2. Beroende på begäranderesursens sling:resourceType har rätt skript lösts.

  3. Skriptet anpassar begäran eller resursen till önskad Sling Model.

  4. Skriptet använder objektet Sling Model för att generera återgivningen HTML.

  5. HTML som genereras av skriptet returneras i HTTP-svaret.

Det här traditionella mönstret fungerar bra när du genererar HTML, eftersom Sling Model enkelt kan utnyttjas via HTML. Att skapa mer strukturerade data som JSON eller XML är en mycket mer tidsödande strävan, eftersom HTML inte naturligtvis passar in på definitionen av dessa format.

Sling Model Exporter HTTP-begäranflöde

Apache Sling Model Exporter levereras med en Sling som tillhandahålls av Jackson Exporter som automatiskt serialiserar ett "normalt" Sling Model -objekt till JSON. Jackson Exporter, som är ganska konfigurerbar, inspekterar objektet Sling Model i sin kärna och genererar JSON med hjälp av någon "getter"-metod som JSON-nycklar, och get-metoden returnerar värden som JSON-värden.

Med den direkta serialiseringen av Sling Models kan de hantera båda vanliga webbförfrågningar med HTML-svar som skapats med det traditionella Sling Model-begäranflödet (se ovan), men också visa JSON-återgivningar som kan användas av webbtjänster eller JavaScript-program.

Sling Model Exporter HTTP Request flow

Det här flödet beskriver flödet med den angivna Jackson Exporter för att skapa JSON-utdata. Användning av anpassade exporterare följer samma flöde men med deras utdataformat.

  1. HTTP-GET-begäran görs för en resurs i AEM med väljaren och tillägget som är registrerat hos Sling Models exportör.

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

  2. Sling löser den begärda resursens sling:resourceType, väljare och tillägg till en dynamiskt genererad Sling Exporter-server, som mappas till Sling Model med Exporter.

  3. Den matchade Sling Exporter-servertypen anropar Sling Model Exporter mot objektet Sling Model som är anpassat från begäran eller resursen (enligt Sling Models-adaptables).

  4. Exportören serialiserar Sling Model baserat på Exporter Options och Exporter-specifika Sling Model-anteckningar och returnerar resultatet till Sling Exporter Servlet.

  5. Sling Exporter-servern returnerar JSON-återgivningen av Sling Model i HTTP-svaret.

NOTE
Apache Sling-projektet tillhandahåller Jackson Exporter som serialiserar Sling Models till JSON, men Exporter-ramverket har även stöd för anpassade exporterare. Ett projekt kan till exempel implementera en anpassad exportör som serialiserar en Sling Model till XML.
NOTE
Det är inte bara Sling Model Exporter serialize Sling Models som kan exporteras som Java-objekt. Exporten till andra Java-objekt spelar ingen roll i flödet för HTTP-begäran och visas därför inte i diagrammet ovan.

Stödmaterial

recommendation-more-help
c92bdb17-1e49-4e76-bcdd-89e4f85f45e6