PHP

코드이그나이터 4 REST API 주의점

마리오64 2022. 4. 14. 22:24

코드이그나이터 4는 네임스페이스와 라우터에서 REST API를 지원합니다.

라우터

코드이그나이터 4를 설치하면 3과 마찬가지로 함수이름을 이용해서 라우팅이 됩니다.

자동라우터라고 합니다.

app/config/Routes.php 파일에

$routes->setAutoRoute(true);

자동라우터 기능이 켜져있을때는 REST API 컨트롤러의 HTTP 메소드로 설정해도 우회방법이 생깁니다.

Routes.php

$routes->resource('City');  //컨트롤러 클래스를 등록
$routes->post('/', 'City::show'); //연결할 url과 메소드를 string 으로 넘김.

show같이 보여주는건 보통 GET메소드를 씁니다.

여기서는 확인을 위해 post를 썼습니다.

City 컨트롤러입니다.

class City extends ResourceController 
//REST API 컨트롤러를 위해 ResourceController를 상속
{

    public function show($id = null)
    {
        $data = ['korea'=>'seoul', 'japan'=> 'tokyo'];
        return $this->respond($data);
    }
    
 }

 

라우터에 show 를 연결했지만 post로 설정했기에 http://localhost:8080/  로는 들어갈수가 없습니다.

그런데 자동라우터 설정이 켜져있기 때문에 http://localhost:8080/city/show 로 들어가면 (컨트롤러/함수이름)

GET 메소드로도 접속이됩니다.  REST API 시 이러한 것을 방지하려면 자동라우팅 설정을 꺼야됩니다.

자동 라우팅 기능때문에 의도하지않은 메서드로 접속됨

그리고 ci4는 왜 문자열로 매개변수를 받게 해놨는지..

보통 문자열로 매개변수를 받으면 개발자가 실수할여지가 많아집니다.

다른 프레임워크들은 함수로 받거나 어노테이션을 쓰고 파라미터는 함수매개변수로 받죠

ci3 보다는 나아졌으나 PSR 규칙도 제대로 안지키는 등 여전히 좋지않군요.

'PHP' 카테고리의 다른 글

PHP로 할 수 있는 것  (0) 2022.11.20
php 개발자 한테 도움되는 사이트  (0) 2022.11.20
그누보드 보안 SQL 인젝션 방어하기  (0) 2022.03.30
PHP 동작방식 - 생명주기  (0) 2022.03.27
PHP if문 정리  (0) 2022.03.05