r
r/qna·
이온디
· 2025.12.06
팁/노하우
API 모듈 기능별로 분리하기
163
API 모듈을 처음엔 간단히 게시판만을 대상으로 하다가,
이번에 홈만사 사이트를 만들면서 API 기능을 대폭 강화했습니다.
그러다보니, 43개의 기능들이 하나의 파일에 들어가있게 되버렸죠.
저도 관리가 안되는
rest.php 분석 결과 (3,835줄, 43개 엔드포인트)
현재 구조
rest.php
├── 보안 설정 (37-115줄)
├── 헬퍼 함수 (133-179줄)
└── switch($type) 분기 (181-3800+줄)
├── 댓글 API (4개)
├── 문서 API (5개)
├── 추천 API (3개)
├── 태그 API (1개)
├── 목록/상세 API (2개) ← 가장 큼
├── 회원 조회 API (3개)
├── CRUD API (3개)
├── 인증 API (5개)
└── 마이페이지 API (17개) ← 가장 많음
제안하는 분리 구조
modules/api/
├── rest.php # 라우터만 (100줄 이하)
├── handlers/
├── CommentHandler.php # 댓글 CRUD (~200줄)
├── DocumentHandler.php # 문서 목록/상세/CRUD (~800줄)
├── VoteHandler.php # 추천/비추천 (~100줄)
├── AuthHandler.php # 인증/비밀번호 찾기 (~400줄)
├── MemberHandler.php # 마이페이지 전체 (~800줄)
└── TagHandler.php # 태그 (~100줄)
└── core/
├── ApiResponse.php # JSON 응답 헬퍼
└── ApiSecurity.php # CORS, 인증 처리
예상 효과
| 항목 | Before | After |
|----------|--------|--------|
| rest.php | 3,835줄 | ~100줄 |
| 파일 수 | 1개 | 8개 |
| 유지보수 | 어려움 | 기능별 독립 |
---
이렇게 분리할까요? 아니면 다른 방식을 원하시나요?
1. 핸들러 클래스 방식 (위 제안) - OOP, 재사용성 좋음
2. 단순 include 방식 - handlers/comment.php 등으로 분리만
3. 현재 유지 - 주석으로 섹션 구분만 강화
** 핸들러 클래스 방식으로 분리해줘. **
0
댓글 1