API 라우트는 표면·입력·작업·출력 네 경계로 흐른다

각 경계가 한 책임만 맡으면 route 파일이 커져도 검증과 오류 계약이 섞이지 않는다.

URL

Resource surface

명사 경로와 동적 id로 대상을 고정

Gate

Input validation

params id와 unknown body를 parser로 검증해 DTO로 좁힘

Policy

Server work

권한 뒤 service·DB·외부 API 실행

Contract

HTTP response

상태 코드와 JSON 오류 모양으로 결과 고정

핵심입력 오류는 업무 로직 전에 멈추고, 서버 실패와 권한 거부는 서로 다른 상태로 반환한다.