REST Resource

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

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

Modulecontroller와 service를 앱에 연결한다.
DTO / Pipe요청 body와 param의 모양을 검증한다.
ControllerHTTP 메서드와 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에는 비즈니스 규칙을 둔다.