CI 묻고 답하기

제목 CI4 RESTful 관련 문의 드립니다.
카테고리 CI 4 관련
글쓴이 꺼노 작성시각 2020/03/30 16:43:28
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 15008   RSS

안녕하세요.

 

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

toolbar 켜서 다시 테스트 해보시겠어요?

get, post는 작동하는 거면 웹서버단의 403은 아니고 ci4에서 그렇게 처리하는건데요.

꺼노 / 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
Allow from all

<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
아 죄송합니다. 정리해서 올리겠습니다.