data-id="1190000004868315">
CodeIgniter 4는 입력 및 출력 처리 방식에 큰 변화를 가져왔습니다. 최신 V3 버전을 포함한 이전 버전에서는 관련 함수가 포함된 두 개의 클래스를 사용하여 입력과 출력을 처리했습니다. 이 처리 방법에는 고급 기술이 없지만 간단하고 직접적으로 기능을 구현할 수 있습니다. V4에서는 HTTP 레이어를 더욱 모듈화하고 HTTP 요청과 응답을 모두 처리하는 새로운 클래스 구조를 구축할 것입니다.
개요
웹 애플리케이션을 개발할 때(CLI 프로그램과 달리) IncomingRequest
및 Response
두 클래스만 걱정하면 됩니다.
IncomingRequest 클래스
IncomingRequest 클래스에는
GET, POST, SERVER 및 ENV 환경을 포함하여 HTTP 요청 및 요청에 수반되는 데이터가 포함됩니다. 변수
HTTP 요청 헤더
쿠키
현재 요청된 URL 개체
업로드된 파일
에는 다음과 같은 일반적인 요청 정보도 포함됩니다.
클라이언트 IP 주소
Ajax 요청인지
CLI 요청인지
HTTPS인지
클래스명 IncomingRequest가 궁금하시다면, IncomingRequest를 간단히 Request라고 불러도 될까요? 대답은 '아니오'입니다. GET 및 POST와 같은 변수를 포함하는 보다 일반적인 또 다른 요청 클래스가 이미 있지만 이 클래스에는 자세한 HTTP 요청 정보가 포함되어 있지 않기 때문입니다. 요청은 일반적으로 두 가지 작업만 수행합니다. 하나는 브라우저 클라이언트가 서버에 요청을 보내거나(들어오는 연결) 현재 서버가 외부 서버에 요청을 보내는 것(나가는 연결)입니다.
응답 클래스
응답 클래스는 프로그램의 실행 결과를 클라이언트에 반환하는 데 사용됩니다. HTTP 응답 헤더를 설정하거나 콘텐츠를 클라이언트에 직접 보낼 수 있습니다. Response 클래스는 다음과 같은 몇 가지 편리한 메서드를 제공합니다.
적절한 캐시 없음 헤더 정보 설정
HTTP 캐시 헤더 정보 처리
페이지 리디렉션
간단한 예
위에서 언급한 내용은 매우 기술적인 것처럼 보이지만 실제로는 매우 간단합니다. 이러한 클래스의 인스턴스는 각 컨트롤러에 속성으로 추가되었으므로 귀찮은 경우 이러한 속성을 직접 사용할 필요가 없습니다. Response 클래스는 컨트롤러의 출력을 캡처하여 자동으로 응답 본문으로 설정합니다. 간단한 Hello World는 다음과 같습니다.
<code>class Home extends \CodeIgniter\Controller { public function index() { echo "Hello World!"; } }</code>
쉽습니다.
이 프레임워크는 필요할 때 응답을 정확하게 제어할 수 있는 기능을 제공합니다. 복잡한 HTTP 캐싱 전략을 만들고 IncomingRequest 클래스를 사용하여 콘텐츠 협상을 통해 응답 콘텐츠를 사용자 지정할 수 있습니다.
다음은 약간 더 복잡한 예입니다. 코드가 이해하기 쉽고 처리하기 쉽습니다.
<code>class Home extends \CodeIgniter\Controller { public function __construct(...$params) { parent::__construct(...$params); // This controller is only accessible via HTTPS if (! $this->request->isSecure()) { // Redirect the user to this page via HTTPS, and set the Strict-Transport-Security // header so the browser will automatically convert all links to this page to HTTPS // for the next year. force_https(); } } public function index() { $data = [ ... ]; // Set some HTTP cache rules for this page. $this->response->setCache([ 'max-age' => 300, 's-max-age' => 900, 'etag' => 'foo' ]); // Return JSON $this->response->setContentType('application/json') ->setOutput(json_encode($data)); } }</code>
이 예에서는 주로 세 가지 작업을 수행합니다. 첫째, 현재 URL을 HTTPS URL로 리디렉션하고 Strict-Transport-Security 응답 헤더를 설정하여(이 방법은 많은 주류 브라우저에서 지원되었으며 브라우저는 요청을 보내기 전에 자동으로 HTTP 요청을 HTTPS 요청으로 변환합니다) 이 페이지는 HTTPS를 통해 액세스할 수 있으며, 브라우저가 캐싱을 올바르게 처리할 수 있도록 몇 가지 HTTP 캐싱 규칙을 설정합니다. 즉, HTTP 요청 수를 줄이고 서버 부하를 줄이며 성능을 향상할 수 있습니다. JSON 데이터를 사용자에게 출력하고 콘텐츠 유형이 올바른지 확인하세요.
이 글을 통해 모두가 CodeIgniter의 미래를 대략적으로 이해하고, 변화가 두렵지 않다는 사실을 깨닫는 데 도움이 되기를 바랍니다. :) 앞으로 상대적으로 안정적인 아키텍처가 형성될 때까지 프레임워크에 대한 더 자세한 내용이 확정될 것이며, 이러한 내용에 대해 이야기하는 기사가 더 많이 작성될 것입니다.
이상은 codeigniter의 내용을 포함하여 CodeIgniter 4의 요청과 응답을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.