안녕하세요.
매일 눈팅만 하다 오늘은 아무래도 안풀리는 문제가 있어 문의드립니다.
Restful API를 구성중입니다.
1. Routes.php
......
$routes->get('v1/users/new', 'V1/Users::new');
$routes->post('v1/users', 'V1/Users::create');
$routes->get('v1/users', 'V1/Users::login');
$routes->get('v1/users/(:segment)', 'V1/Users::show/$1'); //에러 부분
$routes->get('v1/users/(:segment)/edit', 'V1/Users::edit/$1');
$routes->put('v1/users/(:segment)', 'V1/Users::update/$1');
$routes->patch('v1/users/(:segment)', 'V1/Users::update/$1');
$routes->delete('v1/users/(:segment)', 'V1/Users::delete/$1');
.....
2. V1/Users.php
.....
public function show($userId = '')
{
log_message('debug', 'CON::Users::Show');
log_message('debug', $userId);
header('Access-Control-Allow-Origin: *');
return $this->respond($this->model->getUseridInfo($userId), 200);
}
......
- 위의 Routes.php 파일의 '에러부분'을 호출하면 계속 페이지를 찾을수 없다고 합니다.
- $routes->get('v1/users/(:segment)', 'V1/Users::show'); 이렇게 변경하면 에러는 안나는데 변수값을 전달 받을수가 없네요.
- 다들 바쁘시겠지만 잠시 시간을 내어주셔서 답변 부탁드립니다.
그럼 수고하세요.
구글에서 하루종일 뒤졌더니 간신히 답을 얻었습니다.
다른분들도 도움이 되실까 하여 공유드립니다.
$routes->get('v1/users/(:segment)', 'V1/Users::show/$1'); //에러 부분
아래와 같이 변경하였더니 정상 구동하네요. 제가 원인까지는 밝히지 못했습니다. ^^
$routes->get('v1/users/(:segment)', 'V1\Users::show/$1'); //에러 부분저는 이런식으로 사용중입니다.

Group 을 활용하시면 Router 전체 구조가 편해집니다.

V1이 네임스페이스이니 구분자를 '/' 가 아닌 '\'로 쓰는게 맞습니다.
라우팅 순서로 인한 오류라 생각했는데 문법상 오류 였군요.
순서를 아래와 같이 바꿔서 테스트해 보세요.
$routes->get('v1/users/(:segment)', 'V1/Users::show/$1'); //에러 부분 $routes->get('v1/users', 'V1/Users::login');