Comprendere Sling Model Exporter

Apache Sling Models 1.3.0 introduce Sling Model Exporter, un modo elegante per esportare o serializzare gli oggetti Sling Model in astrazioni personalizzate. Questo articolo sovrappone il tradizionale caso d’uso dell’utilizzo di Sling Models per popolare gli script HTL, sfruttando il framework Sling Model Exporter per serializzare un Sling Model in JSON.

Flusso di richieste HTTP del modello Sling tradizionale

Il caso d’uso tradizionale di Sling Models è quello di fornire un’astrazione aziendale per una risorsa o una richiesta, che fornisce script HTL (o, in precedenza, JSP) un’interfaccia per accedere alle funzioni aziendali.

I pattern comuni stanno sviluppando Sling Models che rappresentano i componenti o le pagine AEM e utilizzano gli oggetti Sling Model per alimentare gli script HTL con i dati, con un risultato finale di HTML visualizzato nel browser.

Flusso di richieste HTTP per modello Sling

Flusso di richieste modello Sling

  1. HTTP GET Viene richiesta una risorsa in AEM.

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

  2. In base al sling:resourceType della risorsa della richiesta, lo script appropriato viene risolto.

  3. Lo script adatta la richiesta o la risorsa alla Sling Model desiderata.

  4. Lo script utilizza l'oggetto Sling Model per generare il rendering HTML.

  5. Il codice HTML generato dallo script viene restituito nella risposta HTTP.

Questo modello tradizionale funziona bene nel contesto della generazione di HTML, in quanto il Sling Model può essere facilmente sfruttato tramite HTL. Creare dati più strutturati come JSON o XML è un’impresa molto più noiosa in quanto HTL non si presta naturalmente alla definizione di questi formati.

Sling Model Exporter Flusso di richieste HTTP

Apache Sling Model Exporter viene fornito con uno Sling fornito Jackson Exporter che serializza automaticamente un oggetto "ordinario" Sling Model in JSON. L'esportatore Jackson, pur essendo abbastanza configurabile, al suo centro controlla l'oggetto Sling Model e genera JSON utilizzando qualsiasi metodo "getter" come chiave JSON e i valori restituiti get come valori JSON.

La serializzazione diretta di Sling Models consente loro di soddisfare entrambe le normali richieste web con le risposte HTML create utilizzando il flusso di richieste Sling Model tradizionale (vedi sopra), ma anche di esporre le rappresentazioni JSON che possono essere utilizzate da servizi web o applicazioni JavaScript.

Flusso di richieste HTTP di Sling Model Exporter

Questo flusso descrive il flusso utilizzando l'esportatore Jackson fornito per produrre l'output JSON. L'uso di esportatori personalizzati segue lo stesso flusso ma con il loro formato di output.

  1. HTTP GET Request viene fatto per una risorsa in AEM con il selettore e l’estensione registrati con l’esportatore di Sling Model.

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

  2. Sling risolve il selettore e l’estensione della risorsa richiesta sling:resourceType in un servlet Sling Exporter generato in modo dinamico, mappato su Sling Model con Exporter.

  3. Il servlet Sling Exporter risolto richiama il Sling Model Exporter rispetto all'oggetto Sling Model adattato dalla richiesta o dalla risorsa (come determinato dalle tabelle di adattamento dei modelli Sling).

  4. L’esportatore serializza il Sling Model in base alle opzioni di esportazione e alle annotazioni del modello Sling specifiche per l’esportatore e restituisce il risultato al servlet Sling Exporter.

  5. Il servlet Sling Exporter restituisce il rendering JSON del Sling Model nella risposta HTTP.

NOTA

Mentre il progetto Apache Sling fornisce l'esportatore Jackson che serializza Sling Models a JSON, il framework Exporter supporta anche gli esportatori personalizzati. Ad esempio, un progetto potrebbe implementare un esportatore personalizzato che serializza un Sling Model in XML.

NOTA

Non solo Sling Model Exporter serialize Sling Models, può anche esportarli come oggetti Java. L’esportazione in altri oggetti Java non svolge un ruolo nel flusso di richieste HTTP e quindi non viene visualizzata nel diagramma precedente.

Materiali di supporto

In questa pagina

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