Comprendere Sling Model Exporter

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

Flusso di richieste HTTP del modello Sling tradizionale

Il caso d’uso tradizionale per Sling Models deve 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 si stanno sviluppando Sling Models che rappresentano i componenti o le pagine dell’AEM e che utilizzano Sling Model oggetti per alimentare gli script HTL con i dati, con il risultato finale di HTML visualizzato nel browser.

Flusso richiesta HTTP modello Sling

Flusso di richiesta modello Sling

  1. HTTP GET Richiesta di una risorsa in AEM.

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

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

  3. Lo script adatta la richiesta o la risorsa al Sling Model.

  4. Lo script utilizza Sling Model per generare la rappresentazione HTML.

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

Questo modello tradizionale funziona bene nel contesto della generazione di HTML come Sling Model può essere facilmente sfruttato tramite HTL. La creazione di dati più strutturati, come JSON o XML, è un’operazione 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 un Sling fornito Jackson Exporter che serializza automaticamente un "ordinario" Sling Model oggetto in JSON. Il Jackson Exporter, pur essendo abbastanza configurabile, nel suo nucleo ispeziona Sling Model e genera JSON utilizzando qualsiasi metodo "getter" come chiavi JSON; il getter restituisce valori 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 tradizionale Sling Model flusso di richieste (vedi sopra), ma anche esporre rappresentazioni JSON che possono essere utilizzate da servizi web o applicazioni JavaScript.

Flusso richieste HTTP esportazione modello Sling

Questo flusso descrive il flusso utilizzando il Jackson Exporter fornito per produrre output JSON. L’utilizzo di esportatori personalizzati segue lo stesso flusso ma con il relativo formato di output.

  1. La richiesta HTTP di GET viene effettuata per una risorsa nell’AEM con il selettore e l’estensione registrati con Sling ModelEsportatore di.

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

  2. Sling risolve i sling:resourceType, selettore ed estensione di un servlet di esportazione Sling generato in modo dinamico, mappato sul Sling Model con Exporter.

  3. Il servlet di esportazione Sling risolto richiama Sling Model Exporter contro Sling Model oggetto adattato dalla richiesta o dalla risorsa (come determinato dagli adattabili Sling Models).

  4. L'esportatore serializza Sling Model in base alle annotazioni Opzioni di esportazione e Modello Sling specifico per l’esportatore e restituisce il risultato al servlet di esportazione Sling.

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

NOTE
Mentre il progetto Apache Sling fornisce il Jackson Exporter che serializza Sling Models Per JSON, il framework di esportazione supporta anche gli esportatori personalizzati. Ad esempio, un progetto potrebbe implementare un’utilità di esportazione personalizzata che serializza Sling Model in XML.
NOTE
Non solo Sling Model Exporter serializzare Sling Models, può anche esportarli come oggetti Java. L’esportazione in altri oggetti Java non svolge un ruolo nel flusso di richieste HTTP e pertanto non viene visualizzata nel diagramma precedente.

Materiali di supporto

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