REST resource

Controller는 HTTP 계약을 받고 Service는 리소스 규칙을 처리한다

REST 구현은 데코레이터 나열이 아니라 URL, DTO, 상태 코드, 비즈니스 책임을 같은 리소스 계약으로 묶는 일이다.

Module

controller와 service를 앱에 연결한다.

DTO / Pipe

요청 body와 param의 모양을 검증한다.

Controller

HTTP 메서드와 URL을 받아 service를 호출한다.

Service

조회, 생성, 수정, 삭제 규칙을 처리한다.

요청 Controller 계약 Service 판단 응답
POST /users @Body()를 CreateUserDto로 받는다. 새 id를 만들고 저장 규칙을 적용한다. 201 Created
PATCH /users/:id @Param('id')와 부분 body를 받는다. 대상 id 존재 여부와 수정 가능성을 판단한다. 200 또는 404
DELETE /users/:id 성공 시 본문 없는 응답을 선언한다. 삭제 여부를 boolean으로 반환한다. 204 No Content

원칙: Controller에는 HTTP 계약, Service에는 비즈니스 규칙을 둔다.