GraphQL API 프레임워크를 사용하여 기록 데이터 쿼리

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 5분
  • 사용자 지정 GraphQL API를 생성하여 구성요소 또는 외부 공급업체 시스템의 기록 데이터를 쿼리합니다.

    예를 들어 SLA와 연결된 케이스를 표시하는 구성요소를 만들 수 있습니다. 를 넥스트 경험 UI 프레임워크 사용하여 필요한 구성요소를 개발하고 케이스 테이블에 데이터를 정의하는 GraphQL 스키마를 생성하여 플랫폼에서 케이스 데이터에 액세스할 수 있습니다.

    구성 요소 개발에 대한 자세한 내용은 작업 공간용 구성 요소 개발을 참조하십시오.

    GraphQL의 이점

    GraphQL은 클라이언트 측 개발에 최적화된 웹 쿼리 언어입니다. 스크립팅된 GraphQL을 사용하여 다음을 수행할 수 있습니다.

    • 인트로스펙션을 통해 쿼리할 수 있는 필드와 객체를 검색합니다.
    • 구성요소에서 필요한 정확한 데이터를 쿼리합니다.
    • REST 요청에 대한 여러 엔드포인트가 아닌 단일 API에서 가능한 여러 쿼리를 관리합니다.
    • 스키마를 공개하여 외부 공급업체 시스템과 통합합니다.
    • 구성요소에서 GraphQL 쿼리를 생성하고 응답을 처리합니다.

    시작하기 전에 알아야 할 사항

    사용자 지정 GraphQL API를 만들기 전에 다음이 있는지 확인하십시오.

    • 스키마 작성을 위한 GraphQL 지식.
    • API 동작을 정의하는 JavaScript 지식입니다.
    • 웹 구성요소 개념에 대한 일반 지식.
    • 기록 데이터를 사용하는 사용자 지정 작업 공간 구성요소입니다.
    • ServiceNow 스키마에 노출하려는 데이터 모델에 대한 이해입니다.
    • 해결자 스크립트의 기록 데이터에 필드를 매핑하는 GlideRecord 지식.

    GraphQL 개요

    스크립트 기반 GraphQL API를 만들려면 다음 부분이 포함됩니다.

    GraphQL 스키마 정의 언어(SDL)
    GraphQL 쿼리에서 사용할 수 있는 필드의 구조와 데이터 유형을 정의합니다. GraphQL 스크립팅된 스키마 [sys_graphql_schema] 테이블의 스키마 스크립트 필드를 사용하여 SDL을 정의할 수 있습니다. SDL은 쿼리 및 변형 작업만 지원합니다.
    해결 프로그램
    각 필드에서 반환하는 데이터를 정의합니다. GraphQL 스크립팅된 스키마 양식의 GraphQL 스크립팅된 해결 프로그램 관련 목록에서 각 필드에 대한 해석기를 정의할 수 있습니다.
    Typeresolver
    인터페이스 및 유니언을 구체적인 GraphQL 유형으로 확인합니다. 예를 들어, 인시던트 유형과 문제 유형 간의 유니온을 정의할 수 있습니다. typeresolver 스크립트를 사용하여 언제 반환할지 정의합니다. GraphQL 스크립팅된 스키마 양식의 GraphQL 스크립팅된 유형 해결 프로그램 관련 목록에서 유형 해결 프로그램을 정의할 수 있습니다.
    해결자 매핑
    스키마 필드에 해결자를 매핑합니다. GraphQL 스크립트된 스키마 양식의 GraphQL 스크립팅된 해결 프로그램 매핑 관련 목록에서 확인자 매핑을 정의할 수 있습니다.

    GraphQL 쿼리 언어에 대한 자세한 내용은 GraphQL 웹 사이트를 참조하세요.

    GraphQL API에 대한 쿼리를 테스트하려면 통합 GraphQL 테스트 도구인 GraphQL 탐색기를 사용할 수 있습니다. 자세한 내용은 GraphQL 탐색기를 사용하여 GraphQL API 테스트 문서를 참조하십시오.

    제한

    다음 GraphQL 기능은 지원되지 않습니다.

    • 구독 운영
    • 사용자 지정 스칼라 형식

    내성

    기본적으로 사용자 지정 스키마에 대한 내성적 쿼리는 사용할 수 없습니다. 인트로스펙션을 켜려면 문서를 참조하십시오 GraphQL 스키마에 대한 내성적 쿼리 사용.

    네임스페이스

    GraphQL API에는 두 개의 서로 다른 네임스페이스가 있습니다.

    애플리케이션 네임스페이스
    사용자 지정 애플리케이션의 네임스페이스입니다. 애플리케이션 네임스페이스에 대한 자세한 내용은 애플리케이션 범위를 참조하세요.
    스키마 네임스페이스
    모든 쿼리가 고유하도록 하기 위한 스키마의 네임스페이스입니다. 단일 애플리케이션에 여러 스키마 네임스페이스를 가질 수 있습니다.

    데이터를 쿼리할 때 쿼리에 두 네임스페이스를 모두 포함해야 합니다. 예를 들어 다음 쿼리는 다음과 같은 네임스페이스를 사용하여 데이터를 검색합니다.

    • 애플리케이션 네임스페이스: x_graph_scope
    • 스키마 네임스페이스: planet
    query {
      x_graph_scope {
        planet {
          findAll {
            name
            mass
            distance
          }
        }
      }
    }

    지시문 및 전역 함수

    @source 스키마 지시문

    GraphQL 필드를 부모 객체의 속성 값에 매핑합니다. 필드에 별도의 확인자 스크립트가 있는 경우, 시스템은 상위 객체 대신 확인되는 기록을 사용합니다.

    스키마 스크립트에서 @source 지시문을 사용합니다.

    @defer query 지시문
    GraphQL 조각의 처리를 쿼리의 나중으로 연기합니다. 이 쿼리 지시문을 사용하여 조각 내에서 느리게 응답하는 필드에 대한 데이터 반환을 지연할 수 있습니다. 지연된 조각의 필드 결과를 다중 파트 응답으로 스트리밍합니다.
    주:
    @defer 지시문을 사용하려면 GraphQL 클라이언트가 multipart/mixed HTTP 헤더를 허용해야 합니다. 예를 들어 HTTP 헤더를 Accept: multipart/mixed; boundary="-"로 설정합니다.

    @defer 지시문을 사용하여 사용자 상호 작용 시간을 향상시킵니다. 이 쿼리 지시문을 무분별하게 적용하면 성능이 저하될 수도 있으므로 사용하지 마십시오. 성능 테스트를 수행하여 성능 향상을 위해 지연할 수 있는 필드를 결정합니다.

    해결자 기능

    이러한 기능은 전역 env 객체에서 사용할 수 있습니다.

    • getArguments(): 이전 필드의 인수를 반환합니다.
    • getSource(): 부모 객체를 반환합니다.

    해석기 스크립트에서 사용합니다.

    Typeresolver 함수

    이러한 기능은 전역 env 객체에서 사용할 수 있습니다.

    • getArguments(): 이전 필드의 인수를 반환합니다.
    • getObject(): 상위 객체를 반환합니다.
    • getTypeName(): 인터페이스 또는 공용 구조체 유형의 이름을 반환합니다.

    typeresolver 스크립트에서 사용합니다.

    데모 애플리케이션

    돌연변이와 쿼리가 있는 데모 GraphQL PTO 달력 스키마를 보려면 GraphQL 프레임워크 데모 애플리케이션 플러그인(com.glide.graphql.framework.demo)을 활성화하십시오.