Network/GraphQL

[GraphQL] 4. GraphQL의 introspective query(내향성 쿼리) 사용해 schema, field 정보 조회하기

반응형

내향성 쿼리란?

GraphQL을 사용하기 위해서는 우리가 서버에 쿼리할 수 있는 schema에 대한 정보가 필요하다. schema에 대한 정보가 없다면 어떤 데이터를 받아올 수 있는지를 알 수 없기 때문이다. GraphQL은 introspective query를 통해 schema에 대한 정보를 제공한다. introspective query를 사용하면 우리는 편하게 GraphQL을 사용할 수 있게 된다. 우리가 GraphiQL 사이트에서 ctrl+space를 누르면 자동완성이 되었었는데, 이 자동완성 정보들 또한 내향성 쿼리를 통해 제공된다. 즉, 정리하면 우리는 introspective query를 통해 어떤 schema가 서버에서 제공되는지 알 수 있다.

 

그림1. GraphiQL 자동완성

 

내향성 쿼리의 종류와 네이밍

내향성 쿼리는 __schema 또는 __type이라는 필드로 시작되는 쿼리이다. 보통 프로그래밍에서 private 한 함수를 나타내기 위해 _을 앞에 쓰는 것처럼 GraphQL은 _을 두번 붙인 __을 예약어로 사용해 내향성 쿼리를 나타낸다. 즉 앞에 __가 붙여져 있으면 내향성 쿼리란 것을 뜻한다.

 

 

내향성 쿼리의 내부 살펴보기

내부에는 우리가 쿼리할 수 있는 정보들을 담고 있다. 예를 들어 다음의 쿼리를 실행해보자. 이 쿼리는 스키마의 타입들에 대해 이름과 설명, 해당 타입에 포함되는 필드들을 출력하는 쿼리이다.

query QuerySchemas {
  __schema {
    types{
      name
      description
      fields{
        name
        description
      }
    }
  }
}

 

위 쿼리의 결과는 다음과 같다. Root 타입에 속한 필드들 중에 우리가 그림1에서 쿼리했던 film이 있는 것을 확인할 수 있다.

 

그림2. 타입과 필드의 종류 출력하기

 

위 그림1에서의 자동완성 또한 이러한 값들을 이용해 자동완성을 시킨다. 

 

하나의 타입에 대한 필드 알아보기

위의 쿼리에서는 모든 타입에 대한 쿼리를 출력했다. 만약 하나의 타입에 대한 정보만이 필요하다면 __type(name: $name) 필드를 사용하면 된다.

query QuerySchemas($name : String) {
  __type(name : $name){
    fields{
      name
      description
    }   
  }
}

 

예를들어 Root 타입 필드들을 조회하고 싶다면 다음과 같이 사용하면 된다. 그러면 Root 타입의 필드들만 모두 출력된다.

그림3. 하나의 타입의 필드 조회하기

 

반응형

 

이 글의 저작권은 Kotlin World 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.