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 till egna abstraktioner. I den här artikeln beskrivs det traditionella sättet att använda Sling Models för att fylla i HTML-skript med Sling Model Exporter för att serialisera Sling Model till JSON.

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

Traditionell användning för Sling Models är att tillhandahålla en affärabstraktion för en resurs eller begäran som tillhandahåller HTML-skript (eller tidigare JSP-skript) ett gränssnitt för att komma åt affärsfunktioner.

Vanliga mönster utvecklas Sling Models som representerar AEM komponenter eller sidor och använder Sling Model -objekt som matar in HTML-skript 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. Baserat på begäranderesursens sling:resourceType, är rätt skript löst.

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

  4. Skriptet använder Sling Model objekt för att skapa återgivningen av HTML.

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

Detta traditionella mönster fungerar bra när det gäller att generera HTML och Sling Model kan enkelt 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ärandeflöde

Apache Sling Model Exporter levereras med en Sling-medföljande Jackson Exporter som automatiskt serialiserar en"vanlig" Sling Model till JSON. Jackson Exporter är ganska konfigurerbar, men vid kärnan kontrolleras Sling Model och genererar JSON med någon"getter"-metod som JSON-tangenter, och get-tangenten returnerar värden som JSON-värden.

Direkt serialisering av Sling Models gör att de kan hantera både vanliga webbförfrågningar med HTML-svar som skapats med Sling Model begäranflöde (se ovan), men visar också JSON-renderingar som kan användas av webbtjänster eller JavaScript-program.

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

Det här flödet beskriver flödet med angivet 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 med Sling ModelVi exporterar.

    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 Sling Model objekt anpassat från begäran eller resursen (enligt Sling Models adaptables).

  4. Exportören serialiserar Sling Model baserat på Exporter Options och Exporter-specific Sling Model annotations 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, Exporter-ramverket har också stöd för anpassade exporterare. Ett projekt kan till exempel implementera en anpassad exportör som serialiserar en Sling Model till XML.
NOTE
Inte bara Sling Model Exporter serialisera Sling Modelskan de också 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