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에는 비즈니스 규칙을 둔다.