PART 08. 프로젝트 2 — 타입 안전한 REST API 서버
PART 07에서 React 앱을 만들었습니다. 그 앱이 JSONPlaceholder라는 외부 서비스에서 데이터를 가져왔던 것 기억하시나요? 이번에는 그 역할을 직접 합니다. 우리만의 REST API 서버를 만드는 것입니다.
백엔드 개발에서 TypeScript는 더 빛납니다. 프론트엔드는 브라우저가 오류를 잡아줄 기회라도 있지만, 서버는 오류가 나면 바로 서비스 장애입니다. 타입 안전성이 단순한 편의 기능이 아니라 안정성의 문제가 됩니다.
이 PART에서는 Express 5와 TypeScript로 Todo REST API 서버를 만듭니다. 데이터베이스는 Prisma로 연결하고, 프론트엔드와 타입을 공유하며, 에러 처리를 타입 수준에서 설계하고, Vitest로 테스트까지 작성합니다.
이 PART에서 만드는 것
CRUD가 완성된 Todo API 서버를 만듭니다. PART 07의 React 앱과 바로 연동할 수 있는 구조입니다.
GET /todos— 전체 할 일 목록 조회GET /todos/:id— 특정 할 일 조회POST /todos— 새 할 일 추가PATCH /todos/:id— 할 일 수정DELETE /todos/:id— 할 일 삭제
챕터 구성
각 챕터가 레이어 하나를 담당합니다.
- Ch 01 — 프로젝트 스캐폴딩과 tsconfig 서버용 설정, 핫 리로드 개발 환경
- Ch 02 — Express Request/Response 제네릭 타이핑, 미들웨어 체인 설계
- Ch 03 — Prisma로 데이터베이스 모델 정의, 타입 안전한 쿼리
- Ch 04 — 프론트엔드와 공유 타입 패키지, OpenAPI 코드젠 소개
- Ch 05 — 커스텀 에러 클래스,
Result<T, E>패턴, 타입 안전한 에러 핸들링 - Ch 06 — Vitest로 타입 테스트, API 엔드포인트 테스트, Mock 타이핑
기술 스택
| 역할 | 선택 | 이유 |
|---|---|---|
| 웹 프레임워크 | Express 5 | 안정적이고 TypeScript 지원 성숙 |
| ORM | Prisma | 스키마에서 타입 자동 생성 |
| 테스트 | Vitest | TypeScript 네이티브, 빠른 실행 |
| 런타임 실행 | tsx | ts-node보다 빠른 TypeScript 실행 |
| 프로세스 관리 | nodemon | 파일 변경 시 자동 재시작 |