이 글은 GraphQL Docs를 읽고 정리한 글입니다.
타입 시스템을 이용해 GraphQL 쿼리의 유효성을 검증할 수 있다. 이 때 GraphQL은 타입 시스템 없이 쿼리를 실행할 수는 없다. 검증이 끝나면 쿼리 실행 결과가 반환 된다.
GraphQL의 실행
- 타입의 각 필드는 GraphQL 서버 개발자가 만든 resolver 함수에 의해 실행 된다.
- GraphQL 쿼리의 각 필드는 일종의 다음 타입을 반환하는 타입의 함수로, 필드가 실행된 후 해당 resolver가 호출되며 다음 값을 생성한다.
- GraphQL 쿼리의 끝은 스칼라 값이기 때문에 필드가 객체를 반환하면 해당 객체에 속한 필드는 스칼라 값에 도달할 때까지 실행 된다.
루트 필드 & Resolvers
루트 필드
- GraphQL API에서 사용 가능한 모든 진입점을 나타내는 타입으로, Root 타입 또는 Query 타입이라고 부른다.
Resolvers
- Resolver 함수는 4개의 인수를 받는다고 한다. 인자의 변수명은 언어마다 조금씩 다른 것 같다.
- obj: 대부분 사용되지 않는 루트 Query 타입의 이전 객체
- args: GraphQL 쿼리의 필드에 제공된 인수
- context: 모든 resolver 함수에 전달되며, 현재 로그인한 사용자, 데이터베이스 액세스와 같은 중요한 문맥 정보를 보유하는 값
- info: 현재 쿼리, 스키마 정보와 관련된 필드별 정보를 보유하는 값