요청 전송
브라우저나 앱이 API 엔드포인트로 HTTP 요청을 보낸다.
GET /users
NestJS의 기본 구조는 요청 진입점과 비즈니스 로직을 분리한다. 모듈은 이 구성요소들을 등록하고, 의존성 주입이 서로를 연결한다.
컨트롤러는 HTTP 경계에 머물고, 실제 작업은 서비스로 위임한다.
브라우저나 앱이 API 엔드포인트로 HTTP 요청을 보낸다.
GET /users
경로와 메서드를 매칭하고 필요한 로직을 서비스에 위임한다.
@Get() findAll()
데이터 조회, 계산, 외부 API 호출 같은 핵심 작업을 수행한다.
getUsers()
서비스 결과를 컨트롤러가 HTTP 응답으로 돌려준다.
200 OK
어떤 컨트롤러와 서비스가 같은 기능 단위에 속하는지 메타데이터로 선언한다.
사용자 기능에 필요한 라우트와 로직을 하나의 경계 안에 묶는다.
@Module({
controllers: [UsersController],
providers: [UsersService],
})
역할이 섞이면 테스트와 재사용이 어려워지므로 경계를 작게 유지한다.
컨트롤러는 HTTP 형식에 집중하고, 서비스는 도메인 작업에 집중한다.
같은 비즈니스 로직을 다른 컨트롤러나 서비스에서도 주입받아 쓸 수 있다.
컨트롤러 테스트에서는 서비스를 mock 처리하고, 서비스는 독립적으로 검증한다.