라우트 배치

라우트 책임 분리

사용자 목록 API를 만든다면 모듈은 경계를 선언하고, 컨트롤러는 HTTP 입력을 해석하며, 서비스는 재사용 가능한 규칙을 실행합니다.

1 Module

기능 단위 등록

UsersModule에 컨트롤러와 서비스를 묶고 외부 공개 범위는 exports로 제한합니다.

2 Controller

요청 모양 해석

@Get(':id'), @Body()처럼 경로와 입력을 읽고 서비스 메서드를 호출합니다.

3 Service

업무 규칙 실행

조회 조건, 중복 검사, 저장소 호출처럼 HTTP와 분리 가능한 로직을 담당합니다.

4 Provider

외부 자원 캡슐화

레포지토리, API 클라이언트, 헬퍼를 주입 가능한 단위로 분리해 테스트 대체가 쉽도록 둡니다.

HTTP 표현이 바뀌면

경로, 상태 코드, 파라미터 해석은 컨트롤러에 둡니다.

규칙 재사용이 필요하면

다른 컨트롤러에서도 부를 수 있게 서비스 메서드로 분리합니다.

기능 경계가 커지면

관련 구성 요소를 새 모듈로 묶고 imports 방향을 점검합니다.