Skip to Content
문서핵심 개념핵심 개념

핵심 개념

ASAPJS는 서로 맞물리는 소수의 아이디어를 중심으로 구축되어 있습니다. 이 개념들을 함께 이해하는 것이 프레임워크를 빠르게 익히는 가장 좋은 방법입니다.

라우트 정의 방식부터 데이터베이스 컬럼 타입 지정 방식까지, ASAPJS 애플리케이션의 모든 요소는 다음 여섯 가지 개념에서 비롯됩니다:

  1. 레이어드 아키텍처 — 모든 도메인은 Controller, Application, Repository, Entity 레이어로 구분됩니다. HTTP 관심사는 비즈니스 로직으로 새어들지 않으며, 데이터베이스 관심사는 HTTP 처리 영역으로 새어들지 않습니다.

  2. TypeIs 타입 시스템@asapjs/schema 패키지가 제공하는 데코레이터 하나로 Sequelize 컬럼 정의, Swagger 스키마 프로퍼티, 런타임 타입 강제 변환기를 동시에 생성합니다. 필드를 한 번만 작성하면 나머지는 프레임워크가 알아서 처리합니다.

  3. DTO와 데이터 변환ExtendableDto 서브클래스는 @Dto 데코레이터와 TypeIs 메타데이터를 담고 있어, 요청 바디, 쿼리 문자열, 응답 형태가 모두 엔티티 컬럼과 동일한 언어로 기술됩니다.

  4. 요청 라이프사이클 — 모든 HTTP 요청은 고정된 예측 가능한 파이프라인을 통과합니다: CORS, 바디 파싱, JWT 검증, 선택적 커스텀 미들웨어, 그리고 핸들러 호출 전에 body, query, user, paging을 추출하는 Wrapper 유틸리티 순서로 처리됩니다.

  5. 데코레이터 기반 개발 — 라우트, 컬럼, DTO, Swagger 문서는 모두 정의 시점에 데코레이터로 선언됩니다. 별도로 동기화를 유지해야 할 설정 파일이 없습니다.

  6. 구조화된 에러 처리@asapjs/error 패키지의 error() 팩토리로 타입 안전한 에러를 정의합니다. 에러 코드, 상태, 메시지 템플릿, 데이터 스키마를 한 곳에서 선언하면 런타임 에러 생성과 Swagger 에러 응답 문서가 동시에 처리됩니다.

순서대로 페이지를 읽으며 가이드 투어를 경험하거나, 필요한 주제로 바로 이동하세요.

Last updated on