NestJS · GraphQL
GraphQL Code-first 흐름
TypeScript 클래스와 데코레이터가 GraphQL 계약을 만들고, 리졸버가 그
계약의 실제 실행 경로를 담당한다.
핵심 산출물
코드의 타입 정보가 SDL로 모이고, 요청은 리졸버 메서드로
들어간다.
@ObjectType
@InputType
@Resolver
schema.gql
정의
TypeScript 클래스
응답 타입
Post와 User의 조회 가능한 필드를 고정한다.
입력 타입
CreatePostInput이 Mutation 인자 계약이 된다.
생성
autoSchemaFile
Decorator scan
Field 정보와 타입 관계를 모은다.
SDL 출력
클라이언트가 보는 schema.gql을 만든다.
실행
Resolver 메서드
Query
읽기 요청을 데이터 소스에 매핑한다.
Mutation
입력 검증 뒤 상태 변경을 수행한다.
| 요청 | 담당 | 확인 지점 |
|---|---|---|
| Query | posts, post, author 필드를 필요한 데이터 소스에 연결한다. | SDL의 필드 이름과 Playground 실행 이름이 맞는지 본다. |
| Mutation | 입력 DTO를 검증하고 생성, 수정, 삭제 로직을 호출한다. | InputType의 필수 필드와 서비스 호출 결과를 확인한다. |
| Subscription | postAdded 이벤트 이터레이터를 구독자에게 연결한다. | WebSocket 경로와 이벤트 이름을 함께 점검한다. |
검증 기준
Code-first에서는 코드가 곧 계약의 원본이다. 그래서 클래스, 생성된
schema.gql, 실제 Resolver 실행 결과를 한 묶음으로 확인해야 한다.