GraphQL - 소개
GraphQL은 다음 사항을 제공하는 오픈 소스 사양입니다.
- 구조화된 오브젝트에서 특정 콘텐츠를 선택할 수 있는 쿼리 언어.
- 구조화된 콘텐츠로 해당 쿼리를 수행하는 런타임.
GraphQL은 강력한 포맷의 API입니다. 즉, GraphQL이 액세스하는 대상 및 방법을 이해 할 수 있도록 모든 데이터를 유형별로 명확하게 구조화하고 구성해야 합니다. 콘텐츠 오브젝트의 구조를 정의하는 GraphQL 스키마 내에서 데이터 필드를 정의합니다.
그런 다음 GraphQL 엔드포인트는 GraphQL 쿼리에 응답하는 경로를 제공합니다.
즉, 앱이 AEM에서 사용되는 경우 필요한 사항을 정확하고 안정적이며 효율적으로 선택할 수 있습니다.
AEM GraphQL API
AEM GraphQL API는 표준 GraphQL API 사양을 기반으로 사용자 정의된 버전으로 콘텐츠 조각에서 (복잡한) 쿼리를 수행하도록 특별히 구성되었습니다.
콘텐츠는 콘텐츠 조각 모델에 따라 구조화되므로 콘텐츠 조각을 사용합니다. 이로써 GraphQL의 기본 요구 사항을 충족합니다.
- 콘텐츠 조각 모델은 한 개 이상의 필드로 만들어집니다.
- 각 필드는 데이터 유형에 따라 정의됩니다.
- 콘텐츠 조각 모델은 해당 AEM GraphQL 스키마를 생성하는 데 사용됩니다.
실제로 AEM용 GraphQL(및 콘텐츠)에 액세스하려면 엔드포인트를 사용하여 액세스 경로를 제공합니다.
그런 다음 반환된 콘텐츠를 애플리케이션에서 AEM GraphQL API를 통해 사용할 수 있습니다.
쿼리를 직접 입력하고 테스트하는 데 도움이 되도록 표준 GraphiQL 인터페이스 구현은 AEM GraphQL과 함께 사용할 수도 있습니다(AEM으로 설치할 수 있음). 기록 및 온라인 설명서와 함께 구문 강조, 자동 완성, 자동 제안과 같은 기능을 제공합니다.
AEM GraphQL API과 함께 사용하기 위한 콘텐츠 조각
콘텐츠 조각은 다음과 같이 AEM 스키마 및 쿼리를 위한 GraphQL의 기반으로 사용할 수 있습니다.
- 이를 통해 Headless 방식으로 게재될 페이지 독립적 콘텐츠를 디자인, 작성, 선별 및 게시할 수 있습니다.
- 콘텐츠는 콘텐츠 조각 모델을 기반으로 다양한 데이터 유형을 사용하여 최종 조각의 구조를 사전 정의합니다.
- 모델을 정의할 때 사용할 수 있는 조각 참조 데이터 유형을 사용하여 구조 계층을 추가로 얻을 수 있습니다.
콘텐츠 조각 모델
해당 콘텐츠 조각 모델은
- 활성화 시 스키마를 생성하는 데 사용됩니다.
- GraphQL에 필요한 데이터 유형과 필드를 제공합니다. 애플리케이션이 가능한 요청만 수행하고 예상되는 내용을 수신하도록 합니다.
- 조각 참조 데이터 유형은 다른 콘텐츠 조각을 참조하여 추가적인 구조 수준을 가져오도록 모델에서 사용할 수 있습니다.
조각 참조
조각 참조:
-
콘텐츠 조각 모델을 정의할 때 사용 가능한 특정 데이터 유형입니다.
-
특정 콘텐츠 조각 모델에 따라 다른 조각을 참조합니다.
-
구조화된 데이터를 만든 다음 검색할 수 있습니다.
- 다중 피드 로 정의된 경우 주요 조각에서 여러 하위 조각을 참조(검색)할 수 있습니다.
JSON 미리보기
콘텐츠 조각 모델 디자인 및 개발을 지원하기 위해 콘텐츠 조각 편집기에서 JSON 출력을 미리 볼 수 있습니다.
실제로 AEM GraphQL API 사용하기
초기 설정
콘텐츠에 대한 쿼리를 시작하기 전에 다음 사항을 수행해야 합니다.
-
엔드포인트 활성화
- 도구 > 일반 > GraphQL 사용
- GraphQL 엔드포인트 활성화하기
- 이러면 GraphiQL IDE도 활성화됩니다.
샘플 구조
쿼리에서 실제로 AEM GraphQL API를 사용하려면 두 가지 기본 콘텐츠 조각 모델 구조를 사용할 수 있습니다.
-
회사
- 이름 - 텍스트
- CEO(개인) - 조각 참조
- 직원(개인) - 조각 참조
-
개인
- 이름 - 텍스트
- 이름 - 텍스트
이처럼 CEO 및 직원 필드는 개인 조각을 참조합니다.
다음 경우에 조각 모델을 사용합니다.
- 콘텐츠 조각 편집기에서 콘텐츠를 만드는 경우
- 쿼리할 GraphQL 스키마를 생성하는 경우
쿼리를 테스트할 위치
GraphiQL 인터페이스에 쿼리를 입력할 수 있습니다. 다음 중 하나에서 쿼리 편집기에 액세스할 수 있습니다.
- 도구 > 일반 > GraphQL 쿼리 편집기
- 직접 (예:
http://localhost:4502/aem/graphiql.html
)
쿼리 시작하기
간단한 쿼리는 회사 스키마에 있는 모든 항목의 이름을 반환하는 것입니다. 여기에서 모든 회사 이름 목록을 요청합니다.
query {
companyList {
items {
name
}
}
}
약간 더 복잡한 쿼리는 “작업” 이름이 없는 모든 사람을 선택하는 것입니다. 작업 이름이 없는 모든 사람이 필터링됩니다. 이는 EQUALS_NOT 연산자로 수행됩니다(추가 연산자 있음).
query {
personList(filter: {
name: {
_expressions: [
{
value: "Jobs"
_operator: EQUALS_NOT
}
]
}
}) {
items {
name
firstName
}
}
}
더 복잡한 쿼리를 작성할 수도 있습니다. 예: 이름이 “Smith”인 직원이 한 명 이상 있는 모든 회사의 쿼리. 이 쿼리는 이름이 “Smith”인 모든 개인에 대한 필터링을 보여 주고, 중첩된 조각에서 정보를 반환합니다.
query {
companyList(filter: {
employees: {
_match: {
name: {
_expressions: [
{
value: "Smith"
}
]
}
}
}
}) {
items {
name
ceo {
name
firstName
}
employees {
name
firstName
}
}
}
}
필수 요소 구성과 함께 AEM GraphQL API 사용에 대한 자세한 내용은 다음 자료를 참조하십시오.
- AEM을 통해 GraphQL을 사용하는 방법 알아보기
- 샘플 콘텐츠 조각 구조
- AEM을 통해 GraphQL을 사용하는 방법 알아보기 - 샘플 콘텐츠 및 쿼리
다음 단계
이제 AEM GraphQL API를 사용하여 Headless 콘텐츠에 액세스하고 쿼리하는 방법을 배웠으므로 REST API를 사용하여 콘텐츠 조각의 콘텐츠에 액세스하고 업데이트하는 방법에 대해 알아볼 수 있습니다.
추가 리소스
-
AEM Headless 시작하기 - 콘텐츠 모델링 및 GraphQL을 포함하여 AEM의 Headless 기능 사용 개요를 제공하는 짧은 비디오 튜토리얼 시리즈.