Skip to main content
@api 데코레이터는 Model 클래스의 메서드를 자동으로 HTTP API 엔드포인트로 변환합니다.

데코레이터 개요

자동 라우팅

메서드를 API로 변환 URL 자동 생성

타입 안전성

파라미터 타입 검증 컴파일 타임 체크

HTTP 메서드

GET, POST, PUT, DELETE RESTful API 지원

에러 처리

자동 에러 변환 일관된 응답 형식

기본 사용법

가장 단순한 형태

생성되는 엔드포인트:
  • URL: GET /api/user/getUser
  • 파라미터: { id: number }
  • 응답: User 객체

HTTP 메서드 지정

API 라우팅 규칙

URL 생성 패턴

URL 규칙: - 기본 경로: /api/{modelName}/{methodName} - modelName은 소문자로 변환 - 예: UserModel.getProfile/api/user/getProfile

파라미터 처리

단일 파라미터

복합 파라미터 (객체)

여러 파라미터

반환 타입

기본 타입

구조화된 응답

데코레이터 조합

@api + @transactional

@api + cacheControl/compress 옵션

API 응답의 캐싱과 압축을 @api 데코레이터에서 직접 제어할 수 있습니다.

Cache-Control 설정

Cache-Control 옵션:
  • maxAge: 브라우저 캐시 시간 (초)
  • sMaxAge: CDN/프록시 캐시 시간 (초)
  • staleWhileRevalidate: Stale 상태 허용 시간 (초)
  • public: 공개 캐시 여부 (기본값: true)
  • private: 비공개 캐시 (사용자별)
프리셋 문자열:
  • "1m", "5m", "1h", "1d" 등 시간 단위 문자열 사용 가능

압축 설정

압축 옵션:
  • true: 응답을 gzip/deflate로 압축
  • false: 압축 비활성화 (기본값)

조합 사용

실전 예제: API 최적화:
성능 팁:
  • 정적이거나 자주 변하지 않는 데이터는 cacheControl로 캐싱
  • 10KB 이상의 응답은 compress: true로 압축
  • 개인정보는 { private: true, maxAge: 0 }로 캐시 방지
주의사항: - compress: true는 CPU 사용량 증가 (작은 응답에는 비효율적) - 캐시 시간이 너무 길면 업데이트 반영 지연 - private: true는 CDN 캐싱 불가

에러 처리

자동 에러 변환

기본적으로 모든 에러는 HTTP 500으로 변환됩니다. 커스텀 에러 처리가 필요하면 별도 에러 핸들러를 구현해야 합니다.

실전 예제

CRUD API

복잡한 비즈니스 로직

타입 안전성

파라미터 타입 검증

반환 타입 명시

주의사항

@api 사용 시 주의사항: 1. Model 클래스에서만 사용 가능 2. 메서드는 async 함수여야 함 3. modelName 속성 필수 4. 파라미터/반환 타입 명시 권장 5. 에러는 throw로 전파

흔한 실수

다음 단계

HTTP 메서드

GET, POST, PUT, DELETE 상세

파라미터

타입 정의 및 검증

반환 타입

응답 타입 정의하기

에러 처리

API 에러 핸들링