route, DTO, status code, guard로 요청 모양과 인증 주체를 확정한다.
Controller, Service, DB는 요청 하나를 서로 다른 계약으로 검증한다
온라인 코드 에디터 API는 HTTP 모양, 권한과 비즈니스 규칙, 저장소 무결성을 분리해야 실시간 기능을 얹어도 흔들리지 않는다.
소유권, 생성 한도, 파일 경로, 수정 권한을 같은 기준으로 판단한다.
relation loading과 transaction으로 구조와 내용을 함께 보호한다.
| 계층 | 고정할 계약 | 누락 위험 | 검증 기준 |
|---|---|---|---|
| AuthJWT payload | 사용자 식별자와 guard 적용 | 다른 사용자 프로젝트 접근 | 401/403 e2e 케이스 |
| Project소유권 | 목록, 상세, 수정, 삭제가 같은 owner 기준 | 조회 조건 불일치 | ownerId 조건과 pagination |
| File경로와 내용 | 부모 폴더, 중복 경로, 내용 변경 transaction | 부분 저장과 고아 레코드 | rollback과 conflict 케이스 |
확장 전 점검: REST 계약이 흔들리면 WebSocket 이벤트 권한도 함께 흔들린다.