질문 Q #22391
Restful API 경로문제
Selma Kim 2020-05-11 00:58:09

안녕하세요.

매일 눈팅만 하다 오늘은 아무래도 안풀리는 문제가 있어 문의드립니다.

 

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'); 이렇게 변경하면 에러는 안나는데 변수값을 전달 받을수가 없네요.

- 다들 바쁘시겠지만 잠시 시간을 내어주셔서 답변 부탁드립니다.

 

그럼 수고하세요.

답변 6
#1 한대승(불의회상) 2020-05-11 09:09:12

순서를 아래와 같이 바꿔서 테스트해 보세요.

$routes->get('v1/users/(:segment)',      'V1/Users::show/$1');  //에러 부분
$routes->get('v1/users',                 'V1/Users::login');

 

#2 Selma Kim 2020-05-11 17:44:10
답변주신 내용을 변경하여 테스트해도 동일한 증상이 나타나네요 ㅠㅠ
#3 Selma Kim 2020-05-11 18:26:48

구글에서 하루종일 뒤졌더니 간신히 답을 얻었습니다.

다른분들도 도움이 되실까 하여 공유드립니다.

$routes->get('v1/users/(:segment)',      'V1/Users::show/$1');  //에러 부분

아래와 같이 변경하였더니 정상 구동하네요. 제가 원인까지는 밝히지 못했습니다. ^^

$routes->get('v1/users/(:segment)',      'V1\Users::show/$1');  //에러 부분
#4 테러보이 2020-05-11 18:29:27

저는 이런식으로 사용중입니다.

 

#5 벤지 2020-05-11 19:12:07

 

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

 

#6 한대승(불의회상) 2020-05-12 09:25:51

V1이 네임스페이스이니 구분자를 '/' 가 아닌 '\'로 쓰는게 맞습니다.

라우팅 순서로 인한 오류라 생각했는데 문법상 오류 였군요.