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

Fluxo de solicitação do modelo Sling

  1. HTTP GET A solicitação é feita para um recurso no AEM.

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

  2. Com base no recurso de solicitação sling:resourceType, o Script apropriado será resolvido.

  3. O Script adapta a Solicitação ou Recurso ao estado Sling Model.

  4. O Script usa o Sling Model objeto para gerar a representação de HTML.

  5. 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.

Fluxo de solicitação HTTP do exportador do modelo do Sling

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.

  1. 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

  2. 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.

  3. 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).

  4. 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.

  5. O Sling Exporter Servlet retorna a representação JSON do Sling Model na Resposta HTTP.

NOTE
Enquanto o projeto Apache Sling fornece ao exportador Jackson que serializa Sling Models JSON, a estrutura do Exportador também apoia os Exportadores personalizados. Por exemplo, um projeto poderia implementar um Exportador personalizado que serializa um Sling Model em XML.
NOTE
Não apenas Sling Model Exporter serializar Sling Models, ele também pode exportá-los como objetos Java. A exportação para outros objetos Java não desempenha uma função no fluxo de solicitação HTTP e, portanto, não aparece no diagrama acima.

Materiais de suporte

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