Entender 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 de Sling Models para preencher scripts HTL, com o uso da variável Sling Model Exporter estrutura para serializar um Sling Model no JSON.

Fluxo de Solicitação HTTP do Modelo de Sling Tradicional

O caso de uso tradicional para Sling Models O é fornecer uma abstração de negócios para um recurso ou solicitação, que fornece scripts HTL (ou JSPs anteriores) e uma interface para acessar funções de negócios.

Padrões comuns em desenvolvimento Sling Models que representam AEM componentes ou páginas e usam o Sling Model objetos para alimentar os scripts HTL com dados, com um resultado final do HTML 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 sling:resourceType, o Script apropriado é resolvido.

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

  4. O script usa a variável 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 como o Sling Model pode ser facilmente aproveitado via HTL. Criar dados mais estruturados, como JSON ou XML, é um esforço muito mais entediante, já que 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 exportador de Jackson fornecido pelo Sling que serializa automaticamente um "normal" Sling Model em JSON. O Exportador Jackson, embora bastante configurável, no seu núcleo inspeciona o Sling Model e gera JSON usando qualquer método "getter" como chaves JSON e o getter retorna valores como os valores JSON.

A serialização direta de Sling Models permite que eles atendam às solicitações normais da Web com as respostas do 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 Sling

Este fluxo descreve o fluxo utilizando o exportador de Jackson fornecido para produzir a saída JSON. A utilização de exportadores personalizados segue o mesmo fluxo, mas com o respectivo formato de saída.

  1. HTTP GET Request é feito para um recurso no AEM com o seletor e a extensão registrada no Sling ModelExportador.

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

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

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

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

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

OBSERVAÇÃO

Enquanto o projeto Apache Sling fornece o Exportador Jackson que serializa Sling Models para JSON, o quadro Exportador também oferece suporte a exportadores personalizados. Por exemplo, um projeto pode implementar um Exportador personalizado que serializa um Sling Model em XML.

OBSERVAÇÃO

Não apenas Sling Model Exporter serializar Sling Models, também pode exportá-los como objetos Java. A exportação para outros objetos Java não desempenha uma função no fluxo da Solicitação HTTP e, portanto, não aparece no diagrama acima.

Materiais de apoio

Nesta página