Sling Model Exporter 이해

Apache Sling Models 1.3.0에서는 Sling Model Exporter 개체를 사용자 지정 추상화로 내보내거나 serialize하는 우아한 방법인 Sling Model을 도입했습니다. 이 문서는 Sling Model Exporter 프레임워크를 활용하여 Sling Model를 JSON으로 serialize하는 것과 함께 Sling Models을 사용하여 HTL 스크립트를 채우는 것과 관련된 일반적인 사용 사례를 병치합니다.

기존 Sling 모델 HTTP 요청 흐름

기존 Sling Models 사용 사례는 비즈니스 기능에 액세스하기 위한 인터페이스를 제공하는 리소스 또는 요청에 대한 비즈니스 추상화를 제공하는 것입니다.

일반적인 패턴은 AEM 구성 요소 또는 페이지를 나타내는 Sling Models을 개발하고, Sling Model 개체를 사용하여 브라우저에 표시되는 HTML의 최종 결과를 사용하여 HTL 스크립트를 데이터로 제공합니다.

Sling 모델 HTTP 요청 흐름

Sling 모델 요청 흐름

  1. HTTP GET AEM의 리소스에 대해 요청이 수행되었습니다.

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

  2. 요청 리소스의 sling:resourceType에 따라 적절한 스크립트가 해결됩니다.

  3. 스크립트는 원하는 Sling Model에 요청 또는 리소스를 적용합니다.

  4. 스크립트는 Sling Model 개체를 사용하여 HTML 변환을 생성합니다.

  5. 스크립트에서 생성한 HTML은 HTTP 응답에서 반환됩니다.

이러한 기존 패턴은 HTL을 통해 Sling Model 을 쉽게 활용할 수 있으므로 HTML 생성 컨텍스트에서 잘 작동합니다. HTL이 이러한 형식의 정의에 자연스럽게 도움이 되지 않으므로 JSON 또는 XML과 같이 더 구조화된 데이터를 만드는 것은 훨씬 더 번거로운 작업입니다.

Sling Model Exporter HTTP 요청 흐름

Apache Sling Model Exporter에는 "일반" Sling Model 개체를 자동으로 JSON으로 serialize하는 Jackson Exporter가 제공된 Sling이 포함되어 있습니다. Jackson Exporter는 구성 가능할 뿐만 아니라 코어에서 Sling Model 개체를 검사하고, "getter" 메서드를 JSON 키로 사용하여 JSON을 생성하고, getter 반환 값을 JSON 값으로 생성합니다.

Sling Models의 직접 직렬화를 사용하면 일반 Sling Model 요청 플로우를 사용하여 작성된 HTML 응답으로 두 개의 일반적인 웹 요청을 모두 처리할 수 있지만(위 참조), 웹 서비스 또는 JavaScript 애플리케이션에서 사용할 수 있는 JSON 표현물을 노출할 수도 있습니다.

Sling 모델 내보내기 HTTP 요청 흐름

이 플로우에서는 제공된 Jackson Exporter를 사용하여 JSON 출력을 생성하는 플로우에 대해 설명합니다. 사용자 지정 내보내기 사용은 같은 흐름을 따르지만 출력 형식과 함께 사용합니다.

  1. HTTP GET 요청은 Sling Model 의 Exporter에 등록된 선택기 및 확장이 있는 AEM의 리소스에 대해 수행됩니다.

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

  2. Sling은 요청된 리소스의 sling:resourceType, 선택기 및 확장을 Exporter와 함께 Sling Model에 매핑된 동적으로 생성된 Sling Exporter 서블릿으로 확인합니다.

  3. 해결된 Sling Exporter 서블릿은 요청 또는 리소스에서 채택된 Sling Model 개체(Sling Models 어댑터 테이블에 의해 결정됨)에 대해 Sling Model Exporter을 호출합니다.

  4. 익스포터는 내보내기 옵션 및 익스포터별 Sling 모델 주석을 기반으로 Sling Model을 serialize하고 결과를 Sling Exporter 서블릿에 반환합니다.

  5. Sling Exporter Servlet은 HTTP 응답에서 Sling Model의 JSON 변환을 반환합니다.

노트

Apache Sling 프로젝트가 Sling Models을 JSON에 serialize하는 Jackson Exporter를 제공하는 반면, Exporter 프레임워크도 사용자 지정 Exporter를 지원합니다. 예를 들어, 프로젝트는 Sling Model을 XML로 직렬화하는 사용자 지정 익스포터를 구현할 수 있습니다.

노트

는 Sling Model Exporter serialize Sling Models뿐만 아니라 Java 개체로 내보낼 수도 있습니다. 다른 Java 객체로 내보내기는 HTTP 요청 플로우에서 역할을 수행하지 않으므로 위의 다이어그램에 표시되지 않습니다.

지원 자료

이 페이지에서는