서버

GraphQL을 사용하면 서버 개발자는 특정 엔드포인트를 구현하거나 최적화하는 작업보다는 사용 가능한 데이터를 서술하는 데에 보다 집중할 수 있게 됩니다.

GraphQL 실행

단순히 스키마를 서술하고, 해당 스키마로 부터 데이터를 불러올 수 있는 쿼리 언어를 서술하는 역할만을 맡지 않습니다. GraphQL은 실행 알고리즘에 따라 각 쿼리를 결과로 변환합니다.

이 알고리즘의 핵심은 꽤 간단합니다. 쿼리의 모든 필드가 순회되면서 각 필에서 대하여 리졸버가 실행됩니다.

query {
  author(id: "abc") {
    posts {
      title
      content
    }
  }
}

서버는 제일 먼저, 쿼리 내의 각 필드마다 대응하는 타입을 연관 지을 수 있습니다.

query: Query {
  author(id: "abc"): Author {
    posts: [Post] {
      title: String
      content: String
    }
  }
}

이제 서버 측에서는 각 필드에 필요한 리졸버를 쉽게 파악할 수 있습니다. 쿼리 실행은 쿼리 타입에서 시작하여 너비-우선 탐색으로 이루어집니다. 각각의 필드 리졸버를 거친 다음 모든 결과를 모아서 올바른 형태로 정리한 뒤 이를 반환 합니다.

일괄 리졸브 작업

만약 배열 데이터의 필드를 만났을 때 일일히 리졸버를 반복하며 값을 모을까요? 모든 리졸버 실행을 기다렸다가 한번에 in 조회로 값을 모을 수 있을 것입니다.