안녕하세요.
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);
}
}
?>
답변 감사합니다.
웹프라우져에서는 작동이 됩니다.
PUT / PATH / DELETE 를 사용하고 싶은데, 제가 하는 방식이 틀린 것인가요?
문서에 보면, 저리 하면 연결이 되는 것으로 보이는데, POSTMAN 으로 오류가 나니 난감합니다.
자답입니다.
403은 권한이 없다고 나오는 부분입니다.
GET POST는 가능하고 PUT / PATCH / DELETE 는 권한이 없는 부분은 APACHE / NGINX 에서 권한을 GET / POST 만 주어서 생기는 문제입니다.
저는 APACHE 2.4 를 쓰고 있어서.. CI4 public 디렉토리에 .htaccess 제일 하단에 아래 처럼 추가해주시면 해결이 됩니다.
참고로 2.2 는
Order Allow,Deny
Allow from all
<Limit GET HEAD POST PUT DELETE OPTIONS> Require all granted </Limit>
CI4 쪽만 생각하고 있다보니, 다른쪽은 생각하지도 못했었습니다.
다른 분들께 참고 되시면 좋겠습니다.
감사합니다.
해결되서 다행이지만 이해가 안되는 부분이 있네요. 웹브라우저에서 됐다면 아파치 문제가 아니거든요.
서버단 문제라면 웹브라우저에서도 안되고 포스트맨에서도 안되야 정상입니다. ^^
안녕하세요.
웹브라우져에서는 get / post 로만 작동이 되고 있었습니다.
PUT / PATH / DELETE 는 작동은 하지 않고요.
권한을 주니 작동이 되었습니다.
지금은 또 다른 문제에 ㅜㅜ
소스 없이 답변하기 힘듭니다. (천리안이 아니기에..) 어떤 액션을 했을때 저런 메세지가 나오는지 어떤 소스인지 올리셔야 답을 합니다.
https://www.cikorea.net/bbs/view/qna?idx=15338&page=1&view_category=&lists_style= 2, 3, 4번 읽어보시고 다시 올리세요. ^^
toolbar 켜서 다시 테스트 해보시겠어요?
get, post는 작동하는 거면 웹서버단의 403은 아니고 ci4에서 그렇게 처리하는건데요.