RouterPlugin
이 페이지에서 찾을 수 있는 것
| 심볼 | 분류 | 설명 |
|---|---|---|
RouterPlugin | Class | Express 라우팅, 미들웨어, Swagger를 초기화하는 ASAPJS 플러그인 |
개요
RouterPlugin은 AsapJSPlugin 인터페이스를 구현하는 플러그인 클래스입니다. ASAPJS Application에 등록하면 Express 미들웨어 초기화, 컨트롤러 마운트, Swagger UI 설정, 헬스체크 엔드포인트 등록을 자동으로 수행합니다.
import { RouterPlugin } from '@asapjs/router';클래스 정의
class RouterPlugin implements AsapJSPlugin {
name: string; // '@asapjs/router'
async init(config: AsapJSConfig, context: PluginContext): Promise<void>;
}| 멤버 | 타입 | 설명 |
|---|---|---|
name | string | 플러그인 식별자. '@asapjs/router'로 고정. |
init(config, context) | async (AsapJSConfig, PluginContext) => void | 플러그인 초기화 메서드. Application이 부트스트랩 시 호출합니다. |
Application에 등록하는 방법
import { Application } from '@asapjs/core';
import { RouterPlugin } from '@asapjs/router';
const app = new Application({
name: 'My API',
port: 3000,
basePath: 'api',
dirname: __dirname,
extensions: ['@asapjs/sequelize'],
swagger: {
name: 'My API Documentation',
version: '1.0.0',
description: 'ASAPJS REST API',
scheme: 'http',
host: 'localhost:3000',
},
});
app.use(new RouterPlugin());
app.run();init() 동작 순서
init() 메서드가 호출되면 다음 순서로 초기화를 수행합니다:
1. 패키지 간 통합 설정
@asapjs/sequelize가 extensions에 포함되어 있으면, Swagger 함수(addScheme,generateSchemeRefWithName)를 sequelize 패키지에 주입합니다.@asapjs/error가 extensions에 포함되어 있으면,addScheme함수를 error 패키지에 주입합니다.
2. 미들웨어 초기화
다음 미들웨어를 Express 앱에 등록합니다:
cors()— CORS 허용bodyParser.json({ limit: '200mb' })— JSON 바디 파서bodyParser.urlencoded({ limit: '200mb', extended: true })— URL 인코딩 파서trust proxy: true— 프록시 신뢰 설정config.middleware— 사용자 정의 미들웨어 (설정에 있는 경우)
3. 라우트 마운트
config.dirname의 route.ts 파일에서 컨트롤러 배열을 로드하고, 각 컨트롤러의 basePath와 expressRouter를 읽어 Express 앱에 마운트합니다.
4. 자동 엔드포인트 등록
| 엔드포인트 | 조건 | 설명 |
|---|---|---|
GET /{basePath} | 항상 | 서버 동작 확인 메시지 |
GET /health-check | 항상 | DB 연결 상태 확인 (SELECT 1) |
GET /{basePath}/sync | @asapjs/sequelize 활성화 시 | DB 테이블 동기화 |
GET /{basePath}/docs/swagger-ui.html | 항상 | Swagger UI 인터페이스 |
GET /{basePath}/docs/swagger.json | 항상 | OpenAPI 3.0 JSON 스펙 |
GET /{basePath}/docs/generate-dbml | @asapjs/sequelize 활성화 시 | DBML 스키마 생성 |
5. 에러 핸들러 등록
Express 미들웨어 체인 끝에 errorHandler를 등록합니다. Wrapper를 거치지 않는 에러를 처리합니다.
관련 항목
- RouterController — 플러그인이 마운트하는 컨트롤러 클래스
- Swagger — Swagger 자동 생성과 UI 설정
- Bootstrap — Application과 플러그인 등록
Last updated on