코드이그나이터 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 |