목록 보기
GraphQL Mutation 설계하기
백엔드

GraphQL Mutation 설계하기

두줄요약

GraphQL mutation을 사용자 행동 중심으로 명확하게 설계하는 원칙을 설명했습니다. 단일 input, 고유 payload, 중첩 구조로 버전 없는 확장성을 확보합니다.

구조와 흐름

  • 동사 우선 camelCase와 사용자 행동 중심의 명시적 mutation 이름
  • mutation마다 단일 input 인자와 non-null 고유 입력 객체 타입 구성
  • 입력 객체와 payload의 중첩 구조를 통한 스키마 확장 여지 확보

선택 이유

  • 범용 mutation보다 UI의 의미 있는 행동에 대응하는 mutation의 높은 명확성
  • 단일 input 변수 사용에 따른 클라이언트 mutation 작성 단순화
  • mutation별 고유 payload를 통한 반환 데이터·메타데이터 확장 기반

주의할 점

  • sendEmail(type: PASSWORD_RESET) 같은 범용 API의 입력 제약 및 동작 발견성 저하
  • 단일 객체 직접 반환 시 userErrors, clientMutationId 등 후속 필드 추가 제약
  • toggle 동작에 상태값을 직접 받는 방식에서 발생하는 불필요한 엣지 케이스

적용해볼 점

  • Todo 예제처럼 createTodo, toggleTodoCompleted, updateTodoText의 의도별 mutation 분리
  • 현재 필드가 없어도 빈 input 객체와 고유 payload를 유지하는 미래 확장 공간 확보

다음 읽기

#GraphQL 주제를 이어서 읽기

GraphQL Mutation 설계하기

GraphQL mutation을 사용자 행동 중심으로 명명하고 단일 input·전용 payload 구조를 권장했습니다. 중첩을 활용해 버전 없는 API의 확장성과 메타데이터 추가 여지를 확보합니다.

카카오엔터테인먼트FE
카카오엔터테인먼트FE
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...