핵심 개념
ASAPJS는 서로 맞물리는 소수의 아이디어를 중심으로 구축되어 있습니다. 이 개념들을 함께 이해하는 것이 프레임워크를 빠르게 익히는 가장 좋은 방법입니다.
라우트 정의 방식부터 데이터베이스 컬럼 타입 지정 방식까지, ASAPJS 애플리케이션의 모든 요소는 다음 여섯 가지 개념에서 비롯됩니다:
-
레이어드 아키텍처 — 모든 도메인은 Controller, Application, Repository, Entity 레이어로 구분됩니다. HTTP 관심사는 비즈니스 로직으로 새어들지 않으며, 데이터베이스 관심사는 HTTP 처리 영역으로 새어들지 않습니다.
-
TypeIs 타입 시스템 —
@asapjs/schema패키지가 제공하는 데코레이터 하나로 Sequelize 컬럼 정의, Swagger 스키마 프로퍼티, 런타임 타입 강제 변환기를 동시에 생성합니다. 필드를 한 번만 작성하면 나머지는 프레임워크가 알아서 처리합니다. -
DTO와 데이터 변환 —
ExtendableDto서브클래스는@Dto데코레이터와 TypeIs 메타데이터를 담고 있어, 요청 바디, 쿼리 문자열, 응답 형태가 모두 엔티티 컬럼과 동일한 언어로 기술됩니다. -
요청 라이프사이클 — 모든 HTTP 요청은 고정된 예측 가능한 파이프라인을 통과합니다: CORS, 바디 파싱, JWT 검증, 선택적 커스텀 미들웨어, 그리고 핸들러 호출 전에
body,query,user,paging을 추출하는Wrapper유틸리티 순서로 처리됩니다. -
데코레이터 기반 개발 — 라우트, 컬럼, DTO, Swagger 문서는 모두 정의 시점에 데코레이터로 선언됩니다. 별도로 동기화를 유지해야 할 설정 파일이 없습니다.
-
구조화된 에러 처리 —
@asapjs/error패키지의error()팩토리로 타입 안전한 에러를 정의합니다. 에러 코드, 상태, 메시지 템플릿, 데이터 스키마를 한 곳에서 선언하면 런타임 에러 생성과 Swagger 에러 응답 문서가 동시에 처리됩니다.
순서대로 페이지를 읽으며 가이드 투어를 경험하거나, 필요한 주제로 바로 이동하세요.