Drupal 8이 포함된 GraphQL: 알아야 할 모든 것 가이드(예제 포함!)
게시 됨: 2019-12-17GraphQL은 HTTP에서 Drupal과 통신하며 출력은 그 어느 때보다 구조화되어 있습니다!
오늘날 훌륭한 고객 경험은 훌륭한 콘텐츠에서 시작됩니다. 어디서나 사용할 수 있는 콘텐츠입니다. Drupal 8의 API 우선 이니셔티브를 통해 Drupal에서 관리하는 콘텐츠는 HTTP를 통해 다른 시스템에서 쉽게 사용할 수 있습니다. REST(Representational State Transfer)는 API에 대한 설계 표준을 제공합니다. 그러나 클라이언트 응용 프로그램이 점점 더 복잡해지고 어려워짐에 따라 개발자는 보다 현대적이고 효과적인 솔루션이 필요합니다.

GraphQL은 보다 유연하고 강력한 클라이언트-서버 상호 작용에 대한 요구에서 태어났습니다. 정교한 쿼리 언어이자 실행 기계입니다. 2012년 Facebook은 헤드리스 애플리케이션을 위한 데이터 모델의 기능과 요구 사항을 설명하는 사양을 만들었습니다.
GraphQL이란 무엇입니까?
GraphQL은 API에 대한 적응형 표준이며 이러한 쿼리를 수행하기 위한 런타임을 제공합니다. GraphQL은 API의 정보에 대한 완전하고 합리적인 세부 정보를 제공합니다. "당신이 필요로하는 것을 요구하고 정확히 그것을 얻으십시오"라는 이념으로 개발되었습니다. 클라이언트가 API에서 필요한 정확한 응답을 가져올 수 있도록 합니다. 그 이상도 그 이하도 아닙니다.
GraphQL의 장점
Drupal용으로 GraphQL을 사용하면 얻을 수 있는 많은 이점 중 몇 가지 -
- 더 빠른 프론트엔드 개발
새로운 백엔드 엔드포인트를 기다리지 않고 애플리케이션을 빠르게 강조합니다. 필요한 형태로 데이터를 가져와 데이터 가져오기 및 코드 유지 관리를 개선합니다. - 필요한 것을 요청하고 정확히 얻으십시오.
클라이언트가 요청한 정확한 응답을 제공합니다. 항상 예측 가능한 결과를 반환합니다. GraphQL을 사용하는 응용 프로그램은 서버가 아니라 응용 프로그램이 가져오는 데이터를 제어하기 때문에 안정적입니다. - 기존 데이터 사용
GraphQL은 REST, SOAP 또는 기존 데이터베이스 또는 기타 모든 기존 인프라와 함께 사용할 수 있습니다. 단일 요청으로 모든 데이터를 쿼리할 수 있고 정리된 예측 가능한 응답을 제공합니다. - 적은 바이트 및 왕복
GraphQL을 사용하면 단일 쿼리를 사용하여 필요한 모든 데이터를 가져올 수 있습니다. 그것은 만든다
더 빠르게 적용할 수 있습니다.

Drupal 8을 사용한 GraphQL
REST 대 JSON:API 대 GraphQL
이 세가지를 요청 효율성에 따라 비교해보면 JSON:API와 GraphQL이 우수하다. 단일 요청에서 JSON:API 및 GraphQl이 필요한 모든 응답을 제공할 수 있기 때문입니다. JSON:API의 경우 응답을 조정해야 하는 경우가 있지만 GraphQL의 경우 필요한 만큼만 제공합니다. REST는 일반적인 요구 사항을 충족하기 위해 여러 요청이 필요하기 때문에 이것에 비해 느립니다.
운영 단순성과 구현 측면에서 REST가 가장 쉽고 꽤 오랫동안 존재해 왔습니다. JSON:API는 CDN 및 역방향 프록시에서도 즉시 사용할 수 있습니다. GraphQL의 경우 추가 인프라가 필요하고 이를 구현하려면 클라이언트 라이브러리가 필요합니다.
GraphQL에 비해 REST 및 JSON:API에서 웹 캐시를 사용하는 것이 더 쉽습니다. GraphQL에는 모든 쿼리가 전송되는 단 하나의 끝점(대부분 HTTP POST 끝점)이 있습니다. 쿼리마다 다를 수 있으므로 이러한 유형의 캐싱을 사용하는 것이 더 어렵습니다.
Drupal GraphQL 사양은 이미 구현한 변형에 대해 자동으로 대량/일괄 작업을 지원하지만 JSON:API 사양은 지원하지 않습니다. 일괄 쓰기 작업을 수행하는 기능이 중요할 수 있습니다.
Drupal 8용 GraphQL 설치
Drupal GraphQL 모듈은 모든 GraphQL 사양을 지원하며 GraphQL 스키마를 빌드하고 노출하는 데 사용할 수 있습니다. 버전 8.x-4에서 Drupal 8 모듈의 최신 알파 릴리스는 Drupal 모듈이 플러그인으로 스키마를 확장할 수 있는 기능을 제공합니다.
여기에서 Drupal GraphQL 모듈을 설치할 수 있습니다. https://www.drupal.org/project/graphql
작곡가 명령을 사용하여 설치할 수 있습니다.
작곡가에는 'drupal/graphql:^3.0'이 필요합니다.
GraphQL Core 및 GraphQL 두 가지 모듈을 제공합니다. 두 모듈을 모두 활성화해야 합니다. 예를 들어 drush를 사용하여 활성화할 수 있습니다.
drush en graphql drush en graphql_core
Drupal GraphQL을 사용한 쿼리
드루팔 GraphQL 모듈은 GraphiQL라는 도구를 제공합니다. 강력한 도구이며 자동 완성과 같은 기능이 있는 대화형 UI가 있습니다. 이 도구를 사용하여 쿼리를 실행하고 출력을 얻을 수 있습니다. 인터페이스에 대해 " /graphql/explorer "로 이동합니다.
다음과 같은 UI를 얻을 수 있습니다.

GraphiQL UI
이 UI의 왼쪽 패널에서 쿼리를 작성할 수 있고 오른쪽에서 결과를 JSON 형식의 출력으로 볼 수 있습니다. 오른쪽 상단 모서리에 있는 문서 를 클릭하면 사용 가능한 쿼리에 대한 문서를 볼 수 있습니다. 왼쪽 하단 패널의 쿼리 변수 섹션은 쿼리 변수를 전달하는 데 사용할 수 있습니다.
예
1. 노드 쿼리

Drupal GraphQL - 노드 쿼리
2. 분류 쿼리

Drupal GraphQL - 분류 쿼리
3. 경로 조회

Drupal GraphQL - 경로 쿼리
4. 쿼리 조각

Drupal GraphQL - 쿼리 조각
5.필터

Drupal GraphQL - 필터
6. 결합 필터

Drupal GraphQL - 연결 필터
사용 가능한 다른 연산자는 다음과 같습니다.

- 동일한
- NOT_EQUAL
- 보다 작은
- SMALLER_THAN_OR_EQUAL
- 보다 큰
- GREATER_THAN_OR_EQUAL
- 에
- NOT_IN
- 처럼
- 같지 않은
- 사이
- NOT_BETWEEN
- IS_NULL
- IS_NOT_NULL
접속사는 두 가지 값을 가질 수 있습니다
- 그리고
- 또는
그룹 을 사용하여 더 복잡한 쿼리를 작성할 수도 있습니다.
7.GraphQL 변수

Drupal GraphQL - 변수
돌연변이
GraphQL에서 돌연변이는 서버에 저장된 데이터를 추가, 수정 또는 삭제할 때마다 사용되는 용어입니다. 이 경우 Drupal. 안타깝게도 이 모듈에는 GraphQL의 일부 기술 요구 사항으로 인해 기본적으로 일반적인 돌연변이를 수행하는 방법이 포함되어 있지 않습니다.
생성, 삭제, 업데이트 및 파일 업로드에 대한 예제 코드는 https://github.com/drupal-graphql/graphql-examples에서 찾을 수 있습니다.
돌연변이 예:

Drupal GraphQL - 돌연변이 예
Twig가 있는 Drupal GraphQL
Twig와 함께 Drupal GraphQL을 사용하면 웹사이트의 성능을 크게 향상시킬 수 있습니다. 방법은 다음과 같습니다. Twig 템플릿에 데이터를 삽입할 때 단일 API 호출을 사용하여 필요한 모든 데이터를 가져올 수 있습니다. 또한 클라이언트가 서버가 아닌 데이터를 제어하기 때문에 프로세스가 훨씬 빨라집니다.
Twig와 함께 Drupal GraphQL을 사용하려면 GraphQL Twig 모듈이 필요합니다. 다운로드하고 활성화하려면 다음 명령을 사용하십시오.
작곡가에는 'drupal/graphql_twig:^1.0'이 필요합니다. drush en graphql_twig
그런 다음 웹 사이트에서 GraphQL 쿼리를 사용할 수 있습니다.
{#그래프ql
쿼리 {
관리자:userById(ID: "1") {
아이디
이름
}
사용자:현재 사용자 컨텍스트 {
아이디
}
}
#}GraphQL 변수에서 응답 데이터를 얻습니다.
