타입스크립트 API 응답 안전하게 만들기: Zod 활용

타입스크립트 API 응답을 안전하게 만드는 방법: Zod 활용

카테고리

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

서브카테고리

웹 개발

대상자

타입스크립트 및 API 개발자, 중급 이상의 개발자(타입스크립트 기본 지식 필요)

핵심 요약

  • Zod 라이브러리 사용으로 API 응답의 런타임 타입 검증을 가능하게 함.
  • Quicktype 도구를 통해 JSON 응답을 타입스크립트 타입으로 자동 변환 가능.
  • safeParse() 메서드로 타입 불일치 시 즉시 오류를 감지하고 처리할 수 있음.
  • z.enum, z.object, z.array 등의 Zod API 사용 예시 포함.

섹션별 세부 요약

1. 문제 정의: API 응답 변경으로 인한 앱 충돌

  • API 백엔드가 변경될 경우 타입 불일치로 인해 앱이 예기치 않게 크래시 발생 가능.
  • 개발자에게 명시적인 타입 검증 없이 응답 처리 시 오류 감지 어려움.

2. Zod 라이브러리 소개 및 사용 방법

  • Zod는 JSON 응답의 타입을 런타임에 검증해 타입 안정성을 보장.
  • z.enum, z.object, z.array 등으로 타입 스키마 정의 가능.
  • safeParse() 메서드로 검증 실패 시 parsed.error.format()을 통해 오류 정보 확인.

3. Quicktype 도구 활용한 타입 생성

  • Rick and Morty API 응답 JSON을 Quicktype에 입력해 TypeScript 타입 생성 가능.
  • GenderSchema, SpeciesSchema, ResultSchema 등의 타입 생성 예시 포함.

4. 검증 로직 구현 및 테스트

  • fetchCharacters() 함수에서 RickAndMortyTypesSchema.safeParse(json)으로 검증 수행.
  • 검증 실패 시 console.error()으로 오류 로깅, 성공 시 data 객체로 타입 안전한 데이터 사용.

5. 오류 시뮬레이션 및 검증 결과

  • name 필드를 숫자로 강제 입력해 Zod가 타입 불일치를 감지하는 시나리오 테스트.
  • Zod는 ❌ Invalid API response: 메시지와 함께 오류 포맷을 출력해 즉시 문제 발견 가능.

결론

  • Zod와 Quicktype을 활용해 API 응답의 타입 안정성을 확보하고, 런타임 오류를 사전에 방지할 수 있음.
  • safeParse() 메서드와 Zod의 타입 스키마 정의 패턴을 응용해 안정적인 API 통신 구현 권장.
  • 예시로 사용된 Rick and Morty API는 Zod 적용 시 타입 안전성 향상 효과를 직접 확인 가능.