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

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 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 Scripted Schemas 양식의 GraphQL Scripted Resolvers 관련 목록에서 각 필드에 대한 해결자를 정의할 수 있습니다.
    유형 해결자
    인터페이스와 유니온을 구체적인 GraphQL 유형으로 해석합니다. 예를 들어, 인시던 트 유형과 문제 유형 간의 합집합을 정의할 수 있습니다. typeresolver 스크립트를 사용하여 반환할 시기를 정의합니다. GraphQL Scripted Schemas 양식의 GraphQL Scripted Typeresolvers 관련 목록에서 typeresolver를 정의할 수 있습니다.
    해결자 매핑
    해석기를 스키마의 필드에 매핑합니다. 확인자 매핑은 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 Framework Demo Application 플러그인(com.glide.graphql.framework.demo)을 활성화합니다.