스키마 계약
ObjectType과 InputType으로 클라이언트가 볼 필드와 입력 모양을 고정한다.
nullable 여부가 호환성 계약이다GraphQL API는 Query와 Mutation 이름을 정하는 것만으로 끝나지 않는다. 입력 검증, 인증 위치, resolver에서 서비스로 넘기는 책임, DataLoader로 관계 조회를 묶는 방식, 오류 포맷이 모두 클라이언트 계약이 된다.
ObjectType과 InputType으로 클라이언트가 볼 필드와 입력 모양을 고정한다.
nullable 여부가 호환성 계약이다DTO class-validator, custom scalar, pipe로 잘못된 값이 서비스에 들어가지 않게 한다.
GraphQL 타입과 업무 검증은 다르다Resolver는 인증 컨텍스트와 인자를 정리하고 실제 업무 로직은 service로 넘긴다.
Resolver가 DB 쿼리로 가득 차면 테스트가 어려워진다Field Resolver에서 반복 조회가 생기면 DataLoader로 batch와 cache 범위를 관리한다.
목록 100개가 쿼리 101개로 번지지 않게 한다내부 예외를 그대로 노출하지 않고 code, message, path를 정책대로 정리한다.
디버깅 정보와 사용자 메시지를 분리한다