CI 묻고 답하기

제목 Restful API 경로문제
카테고리 CI4 관련
글쓴이 Selma Kim 작성시각 2020/05/11 00:58:09
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 462   RSS

안녕하세요.

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

 

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

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

 

그럼 수고하세요.

 다음글 페이지네이션 next_link 클릭시 다음 블럭으로 ... (3)
 이전글 혹시 PHPUnit test code 작성 하고 계신분... (1)

댓글

한대승(불의회상) / 2020/05/11 09:09:12 / 추천 0

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

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

 

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

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

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

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

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

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

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

 

벤지 / 2020/05/11 19:12:07 / 추천 0

 

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

 

한대승(불의회상) / 2020/05/12 09:25:51 / 추천 0

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

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