schema design

GraphQL 스키마 심화

스키마가 커질수록 Input, Interface, Enum, Nullable 규칙을 일관되게 잡아야 클라이언트 변경 비용이 줄어듭니다.

input

Input Type

쓰기 요청의 값 구조를 분리해 재사용하고 검증 지점을 선명하게 만듭니다.

enum

Enum

상태값과 선택지를 문자열보다 안전하게 표현하고 문서화합니다.

interface

Interface

비슷한 객체가 공유하는 필드 계약을 만들고 확장 타입을 연결합니다.

nullable

Nullable

없을 수 있는 값과 항상 오는 값을 구분해 클라이언트 분기 비용을 줄입니다.

확장 전 새 타입이 기존 타입의 일부인지, 완전히 다른 책임인지 먼저 나눕니다.
확장 중 Input과 Output을 섞지 않고 Enum 이름과 nullable 규칙을 일관되게 둡니다.
확장 후 생성된 스키마와 클라이언트 쿼리 타입을 확인해 깨진 필드를 빠르게 찾습니다.