Compreender Sling Model Exporter
Apache Sling Models 1.3.0 introduz Sling Model Exporter, uma maneira elegante de exportar ou serializar Sling Model objetos em abstrações personalizadas. Este artigo justapõe o caso de uso tradicional do uso Sling Models para preencher scripts HTL, com a utilização do Sling Model Exporter estrutura para serializar um Sling Model no JSON.
Fluxo de solicitação HTTP do modelo Sling tradicional
O caso de uso tradicional do Sling Models é fornecer uma abstração de negócios para um recurso ou solicitação, que fornece scripts HTL (ou, anteriormente JSPs) uma interface para acessar funções de negócios.
Padrões comuns estão se desenvolvendo Sling Models que representam Componentes ou Páginas do AEM e usando o Sling Model objetos para alimentar os scripts HTL com dados, com um resultado final de HTML que é exibido no navegador.
Fluxo de solicitação HTTP do modelo Sling
-
HTTP GET A solicitação é feita para um recurso no AEM.
Exemplo:
HTTP GET /content/my-resource.html
-
Com base no recurso de solicitação
sling:resourceType
, o Script apropriado será resolvido. -
O Script adapta a Solicitação ou Recurso ao estado Sling Model.
-
O Script usa o Sling Model objeto para gerar a representação de HTML.
-
O HTML gerado pelo script é retornado na Resposta HTTP.
Este padrão tradicional funciona bem no contexto de geração de HTML como o Sling Model podem ser facilmente aproveitados por meio de HTL. Criar dados mais estruturados, como JSON ou XML, é uma tarefa muito mais tediosa, pois o HTL não se presta naturalmente à definição desses formatos.
Sling Model Exporter Fluxo de solicitação HTTP
Apache Sling Model Exporter vem com um Sling fornecido Jackson Exportador que automaticamente serializa um "comum" Sling Model no JSON. O Jackson Exporter, embora bastante configurável, em seu núcleo inspeciona o Sling Model e gera JSON usando qualquer método "getter" como chaves JSON, e os valores de retorno de getter como valores JSON.
A serialização direta de Sling Models permite que eles atendam às solicitações normais da Web com suas respostas de HTML criadas usando o Sling Model fluxo de solicitação (veja acima), mas também exponha representações JSON que podem ser consumidas por serviços da Web ou aplicativos JavaScript.
Esse fluxo descreve o fluxo usando o exportador Jackson fornecido para produzir a saída JSON. O uso de exportadores personalizados segue o mesmo fluxo, mas com seu formato de saída.
-
A solicitação HTTP GET é feita para um recurso no AEM com o seletor e a extensão registrados com o Sling ModelExportador do.
Exemplo:
HTTP GET /content/my-resource.model.json
-
O Sling resolve o problema do recurso
sling:resourceType
, seletor e extensão para um Sling Exporter Servlet gerado dinamicamente, que é mapeado para o Sling Model com o Exportador. -
O Sling Exporter Servlet resolvido invoca a variável Sling Model Exporter contra a Sling Model objeto adaptado a partir da solicitação ou do recurso (conforme determinado pelos adaptáveis do Sling Models).
-
O exportador põe em Sling Model com base nas anotações Opções do exportador e Modelo do Sling específico do exportador e retorna o resultado para o Sling Exporter Servlet.
-
O Sling Exporter Servlet retorna a representação JSON do Sling Model na Resposta HTTP.