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

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기5분
  • 사용자 지정 GraphQL API를 생성하여 구성요소 또는 타사 시스템의 레코드 데이터를 쿼리합니다.

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

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

    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 스크립팅된 Typeresolvers 관련 목록에서 타입 해석기를 정의할 수 있습니다.
    해결자 매핑
    확인자를 스키마의 필드에 매핑합니다. GraphQL 스크립팅된 스키마 양식의 GraphQL 스크립팅된 해석기 매핑 관련 목록에서 해석기 매핑을 정의할 수 있습니다.

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

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

    제한

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

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

    내성

    기본적으로 사용자 지정 스키마에 대한 내성 쿼리는 사용하도록 설정되어 있지 않습니다. 인트로스펙션을 켜려면 을 참조하십시오 GraphQL 스키마에 대한 내성 쿼리 사용.

    네임스페이스

    GraphQL API에는 두 가지 네임스페이스가 있습니다.

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

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

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

    지시문 및 전역 함수

    스키마 지시문 @source

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

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

    @defer 쿼리 지시문
    쿼리의 뒷부분까지 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)을 활성화하십시오.