제목 | CI4 RESTful 관련 문의 드립니다. | ||
---|---|---|---|
카테고리 | CI 4 관련 | ||
글쓴이 | 꺼노 | 작성시각 | 2020/03/30 16:43:28 |
|
|||
안녕하세요.
RESTful API 만들어 보려고 하고 있습니다. 헌데, Postmen 에서 PUT, PATCH, DELETE 부분에서 403 Forbidden 으로 접근을 하지 못하고 있습니다. GET / POST 는 연결은 잘 됩니다.
개발은 코드이그나이터 4 문서 보고 진행했습니다. http://ci4doc.cikorea.net/incoming/restful.html
제가 생각하지 못하고 있는 부분이 있는것인지.. 궁금합니다. 아래 소스 붙여 넣었습니다. 실력자 분들 도와주시면 감사드리겠습니다. ㅜㅜ
Routes.php $routes->resource('users'); // Controller is \Users $routes->add('users', 'Users::index'); // // Equivalent to the following: $routes->get('users/new', 'Users::create'); $routes->post('users', 'Users::create'); $routes->get('users', 'Users::index'); $routes->get('users/(:segment)', 'Users::show/$1'); $routes->put('users/(:segment)', 'Users::update/$1'); $routes->patch('users/(:segment)', 'Users::update/$1'); $routes->delete('users/(:segment)', 'Users::delete/$1');
Users.php <?php namespace App\Controllers; use CodeIgniter\API\ResponseTrait; use CodeIgniter\RESTful\ResourceController; class Users extends ResourceController { use ResponseTrait; public function index() { return $this->respond([[1]]); } public function show($id = null) { return $this->respond(['id' => $id]); } public function create() { return $this->respondCreated(['id' => 'x']); } public function update($id = null) { return $this->respond(['up' => $id]); } public function delete($id = NULL) { return $this->respondDeleted($id); } } ?>
|
|||
다음글 | 마지막 INSERT INTO 한 값의 마지막 selec... (2) | ||
이전글 | 모델 클래스 문의 드립니다!! (2) | ||
변종원(웅파)
/
2020/03/30 16:56:52 /
추천
0
|
꺼노
/
2020/03/30 17:06:21 /
추천
0
답변 감사합니다. 웹프라우져에서는 작동이 됩니다. PUT / PATH / DELETE 를 사용하고 싶은데, 제가 하는 방식이 틀린 것인가요? 문서에 보면, 저리 하면 연결이 되는 것으로 보이는데, POSTMAN 으로 오류가 나니 난감합니다. |
꺼노
/
2020/03/31 09:01:00 /
추천
0
자답입니다. 403은 권한이 없다고 나오는 부분입니다. GET POST는 가능하고 PUT / PATCH / DELETE 는 권한이 없는 부분은 APACHE / NGINX 에서 권한을 GET / POST 만 주어서 생기는 문제입니다. 저는 APACHE 2.4 를 쓰고 있어서.. CI4 public 디렉토리에 .htaccess 제일 하단에 아래 처럼 추가해주시면 해결이 됩니다. 참고로 2.2 는 Order Allow,Deny <Limit GET HEAD POST PUT DELETE OPTIONS> Require all granted </Limit> CI4 쪽만 생각하고 있다보니, 다른쪽은 생각하지도 못했었습니다. 다른 분들께 참고 되시면 좋겠습니다. 감사합니다. |
변종원(웅파)
/
2020/04/01 16:21:52 /
추천
0
해결되서 다행이지만 이해가 안되는 부분이 있네요. 웹브라우저에서 됐다면 아파치 문제가 아니거든요. 서버단 문제라면 웹브라우저에서도 안되고 포스트맨에서도 안되야 정상입니다. ^^ |
꺼노
/
2020/04/02 14:41:23 /
추천
0
안녕하세요. 웹브라우져에서는 get / post 로만 작동이 되고 있었습니다. PUT / PATH / DELETE 는 작동은 하지 않고요. 권한을 주니 작동이 되었습니다.
지금은 또 다른 문제에 ㅜㅜ "message": "Allowed fields must be specified for model: App\\Models\\UsersModel",
검색을 해도 어찌 안나오는지.. Allowd fields 는 디비에 들어 가는 값을 다 넣어놨는데 .. ㅜㅜ
보안 문제일까요?
|
변종원(웅파)
/
2020/04/02 16:01:26 /
추천
0
소스 없이 답변하기 힘듭니다. (천리안이 아니기에..) 어떤 액션을 했을때 저런 메세지가 나오는지 어떤 소스인지 올리셔야 답을 합니다. https://www.cikorea.net/bbs/view/qna?idx=15338&page=1&view_category=&lists_style= 2, 3, 4번 읽어보시고 다시 올리세요. ^^ |
꺼노
/
2020/04/02 18:35:38 /
추천
0
아 죄송합니다. 정리해서 올리겠습니다.
|
toolbar 켜서 다시 테스트 해보시겠어요?
get, post는 작동하는 거면 웹서버단의 403은 아니고 ci4에서 그렇게 처리하는건데요.