GraphQL 오류 처리: __typename과 유니언 타입 활용법
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

GraphQL 오류 처리의 핵심: 유니언, 오류, __typename

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

GraphQL 백엔드/프론트엔드 개발자, API 설계자

난이도: 중급 이상 (GraphQL 유니언, 타입 시스템 이해 필요)

핵심 요약

  • GraphQL 오류 처리에서 __typename을 활용한 유니언 타입 구분
  • ValidationErrorUser 타입의 유니언으로 오류 구조 명확화
  • __typename을 통해 유니언 타입의 안전한 구분과 타입스크립트 추론 적용

섹션별 세부 요약

1. 기존 오류 처리의 한계

  • 일반적인 data/errors 필드로 오류 처리 시, 오류 메시지의 구조적 불확실성 발생
  • 백엔드에서 email이 중복 오류 시, 프론트엔드에서 error.message만으로 필드 특정 불가
  • GraphQL 서버가 임의의 오류 형식 반환 가능 → 스키마 검증 기능 약화

2. 오류를 데이터로 처리하는 방법

  • __typename 필드를 활용한 유니언 타입 반환

```graphql

signUp(input: $input) {

__typename

... on User { id email name }

... on ValidationError { field message }

}

```

  • 프론트엔드에서 data.signUp.__typename으로 타입 구분 및 필드 접근 가능
  • ValidationError 타입의 경우 field/message 필드를 타입스크립트 추론으로 안전하게 사용

3. 유니언 타입 구분 전략

  • __typename을 기반으로 한 타입 가드

```typescript

if (data.signUp.__typename === 'ValidationError') {

setError(data.signUp.field, data.signUp.message);

}

```

  • isValidationError 함수의 불안정성(예: message 필드 중복 시 오류) 방지
  • 타입 시스템을 통한 안전한 오류 구분으로 코드 유지보수성 향상

결론

  • GraphQL 오류 처리에서 __typename을 반드시 활용해 유니언 타입의 명확한 구분과 타입 안전성 확보
  • ValidationErrorUser 타입을 유니언으로 반환해 오류 정보의 구조적 명확성 제공
  • 타입스크립트 추론과 결합해 코드 안정성과 유지보수성 향상 가능