개요
CodeIgniter를 이용하여 REST API를 개발하던 중에 다음과 같은 형태로 폴더 구조를 만들고, API를 호출하면 무조건 "404 Not found" 오류를 반환하였습니다.
동일한 "Welcome.php" 소스를 "rapi" 폴더에 복사하고 다음과 같이 호출하면 정상적으로 호출됩니다.
검색하여 보니 기본적으로 CodeIgniter를 이용하여 controllers 폴더 하위에 폴더를 생성하여 각 폴더별로 소스를 관리하는 것이 가능하기는 하지만, 1단계 하위 폴더까지만 인식이 되고 그 하위 폴더들은 인식이 되지 않고 무조건 404 오류가 반환되도록 되어 있는 것이었습니다.
1단계 하위 폴더 아래 추가로 하위 폴더를 더 만들어서 소스들을 관리하기 위해서는 CodeIgniter의 기본 Router 클래스를 상속받아 확장해야만 가능합니다.
작업 내용
2단계가 넘어가는 하위 폴더별로 프로젝트 소스를 분리하여 관리하기 위해서는 다음의 "MY_Router.php" 소스를 "application/core" 폴더 아래에 복사합니다.
결론
CodeIgniter에서는 기본적으로 controllers 폴더 아래 1단계 하위에 폴더까지만 각 폴더별로 소스를 관리하는 것이 가능하고, 1단계 하위 폴더 아래 추가로 하위 폴더를 더 만들어서 소스들을 관리하기 위해서는 CodeIgniter의 기본 Router 클래스를 상속받아 확장해야만 가능합니다.
2단계가 넘어가는 하위 폴더별로 프로젝트 소스를 분리하여 관리하기 위해서는 본문의 "MY_Router.php" 소스를 "application/core" 폴더 아래에 복사해 두면, 서브 폴더를 다단계로 나누어 소스의 관리가 가능합니다.
참고자료
- CodeIgniter controller in subfolder
- controllers 폴더를 서브 폴더로 정리하기?
- Organizing Your Controllers into Sub-directories
- ollierattue/codeigniter-multi-level-controller-extension
- hanwh/codeigniter-multi-level-controller-extension ; CodeIgniter 3.1.10에 맞도록 수정한 버전
'프로그래밍 > PHP' 카테고리의 다른 글
PHP 개발환경 설정 (Windows 10) (0) | 2020.06.09 |
---|---|
[PHP] openssl encrypt/decrypt 사용시, OPENSSL_NO_PADDING 옵션에 대하여 (0) | 2020.06.08 |
[PHP] 문자열 결합 성능 비교 (Comparison of string concatenation performance) (0) | 2019.12.24 |
PHP에서 기본 시간대(timezone)에 대하여 (0) | 2019.10.26 |
empty() 함수 사용 주의점 (3) | 2019.09.03 |