Entender Sling Model Exporter

O Apache Sling Models 1.3.0 apresenta o Sling Model Exporter, uma maneira elegante de exportar ou serializar objetos Sling Model em abstrações personalizadas. Este artigo justapõe o caso de uso tradicional do uso de Sling Models para preencher scripts HTL, com a utilização da estrutura Sling Model Exporter para serializar um Sling Model em JSON.

Fluxo de solicitação HTTP do modelo Sling tradicional

O caso de uso tradicional de 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 são o desenvolvimento de Sling Models que representam Componentes ou Páginas AEM e o uso de objetos Sling Model para alimentar 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 De Modelo Do Sling

  1. HTTP GET 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 é resolvido.

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

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

  5. O HTML gerado pelo script é retornado na Resposta HTTP.

Esse padrão tradicional funciona bem no contexto da geração de HTML, pois o Sling Model pode ser facilmente aproveitado via 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.

Fluxo de solicitação HTTP Sling Model Exporter

O Apache Sling Model Exporter vem com um Exportador Jackson fornecido pelo Sling que serializa automaticamente um objeto Sling Model "comum" em JSON. O Exportador Jackson, embora bastante configurável, em seu núcleo inspeciona o objeto Sling Model e gera JSON usando quaisquer métodos "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 fluxo de solicitações Sling Model tradicional (veja acima), mas também expõem representações JSON que podem ser consumidas por serviços Web ou aplicativos JavaScript.

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

Este 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. GET A Solicitação HTTP é feita para um recurso no AEM com o seletor e a extensão registrados com o Exportador do Sling Model.

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

  2. O Sling resolve o sling:resourceType, o seletor e a extensão do recurso solicitado para um Sling Exporter Servlet gerado dinamicamente, que é mapeado para o Sling Model com o Exportador.

  3. O Sling Exporter Servlet resolvido invoca o Sling Model Exporter contra o objeto Sling Model adaptado a partir da solicitação ou do recurso (conforme determinado pelos adaptáveis dos Modelos Sling).

  4. O exportador serializa o Sling Model com base nas opções do exportador e nas anotações do modelo Sling específicas do exportador e retorna o resultado para o Sling Exporter Servlet.

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

NOTE
Embora o projeto Apache Sling forneça o Exportador Jackson que serializa Sling Models para JSON, a estrutura do Exportador também oferece suporte a 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 serializa Sling Models, mas 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