FuelPHP-요청 및 응답
HTTP 요청 및 HTTP 응답은 모든 웹 애플리케이션에서 중요한 역할을합니다. 제대로 처리하려면 http 요청의 전체 세부 정보를 가져와야합니다. 처리가 완료되면 http 응답을 통해 처리 된 데이터를 클라이언트에 보내야합니다.
FuelPHP는 우수한 Request 과 ResponseHTTP 요청과 HTTP 응답을 각각 읽고 쓰는 클래스입니다. 둘 다에 대해 배우자Request 과 Response 이 장의 수업.
의뢰
일반적인 웹 애플리케이션에서 애플리케이션은 현재 요청의 세부 정보를 구문 분석해야합니다. Request 클래스는 응용 프로그램에서 처리 할 현재 요청을 구문 분석하는 간단한 메서드를 제공합니다. 요청 은 http 클라이언트 역할을하여 새 요청을 생성하는 옵션도 제공합니다.
새 요청을 생성하면 애플리케이션이 애플리케이션의 다른 부분 또는 완전히 다른 애플리케이션을 요청하고 결과를 표시 할 수 있습니다. 이 장에서 들어오는 요청을 구문 분석하는 방법을 배우고 HMVC 요청 장에서 새 요청을 만드는 방법을 알아 보겠습니다.
요청 구문 분석
요청 클래스는 http 요청의 세부 사항을 가져 오는 세 가지 메소드를 제공합니다. 다음과 같습니다.
active − 현재 활성 http 요청을 반환하는 정적 메서드입니다.
$currentRequest = Request::active();
param-지정된 매개 변수의 값을 반환합니다. 두 개의 인수를 포함합니다. 첫 번째 인수는 매개 변수 이름이고 두 번째 인수는 현재 http 요청에서 매개 변수를 사용할 수없는 경우 반환 할 값입니다.
$param = Request::active()->param('employee_name', 'none');
params-모든 매개 변수를 배열로 반환한다는 점을 제외하면 param과 동일합니다.
$params = Request::active()->params();
예
간단한 양식을 만들고 요청 클래스를 사용하여 양식을 처리해 보겠습니다.
Step 1− 직원 컨트롤러에서 새로운 액션 action_request 를 생성합니다 .
public function action_request() {
}
Step 2 − 요청 메소드를 호출하여 현재 요청의 모든 매개 변수를 가져옵니다.
public function action_request() {
$params = Request::active()->params();
}
Step 3 − 가져온 매개 변수 배열을 덤프합니다.
public function action_request() {
$params = Request::active()->params();
echo dump($params);
}
Step 4− 경로 구성 파일 fuel / app / config / routes.php에 매개 변수를 포함하도록 경로를 변경하십시오.
'employee/request(/:name)?' => array('employee/request', 'name' => 'name'),
이제 새 작업 인 http : // localhost : 8080 / employee / request / Jon을 요청 하면 다음 응답이 표시됩니다.
응답
응답 클래스는 http 응답을 생성하는 옵션을 제공합니다. 기본적으로 대부분의 상황에서 직접 응답 클래스를 사용할 필요는 없습니다. 대신 View (다음 장에서 배울 것임)를 사용하여 http 응답을 만듭니다. View는 개발자로부터 http 응답을 숨기고 기본 Response 클래스를 사용하여 클라이언트에 응답을 보냅니다 . 고급 상황에서는 Response 클래스를 직접 사용하고 완전한 http 응답을 생성합니다.
응답 생성
응답은 헤더와 본문으로 구성됩니다. 기본 헤더는 http 상태 코드입니다. HTTP 상태 코드는 응답을 설명하기 위해 HTTP 프로토콜에 정의 된 표준 코드입니다. 예를 들어 상태 코드 200은 요청이 성공했음을 의미합니다.
응답 클래스는 http 응답을 생성하는 세 가지 인수를 제공합니다.
- $body − http 응답의 본문
- $status_code − http 응답의 상태 코드
- $headers − 배열로서의 선택적 헤더
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
다음과 같이 직원 컨트롤러에 새로운 액션 action_response 를 생성 해 보겠습니다 .
public function action_response() {
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
return $response;
}
결과
행동 양식
응답 클래스는 http 응답을 조작하는 많은 방법을 제공합니다. 다음과 같습니다.
forge − 위에서 본 응답 클래스 생성자와 동일합니다.
return Response::forge("Hi, FuelPHP", 404);
redirect− 응답을 보내는 대신 URL로 리디렉션하는 옵션을 제공합니다. 다음 인수가 포함됩니다.
a.url− 도착 URL b. method-리디렉션 방법. 위치 (기본값) 및 새로 고침 c.redirect_code-http 상태 코드. 기본값은 302입니다.
// use a URL
Response::redirect('http://some-domain/index', 'refresh');
// or use a relative URI
Response::redirect('employee/list');
redirect_back− 이전 페이지로 이동한다는 점을 제외하면 리다이렉트 방식과 유사합니다. 백 페이지를 사용할 수없는 경우 리디렉션 페이지를 지정할 수 있습니다.
// If there is no back page, go to the employee list page
Response::redirect_back('/employee/list', 'refresh');
set_status − http 상태 코드를 설정하는 옵션을 제공합니다.
$response = new Response();
$response->set_status(404);
set_header − http 헤더를 설정하는 옵션을 제공합니다.
$response = new Response();
$response->set_header('Content-Type', 'application/pdf');
// replace previous value using third arguments
$response->set_header('Content-Type', 'application/pdf', 'text/plain');
set_headers− 배열을 사용하여 여러 헤더를 설정하는 옵션을 제공 한다는 점을 제외하면 set_header 와 동일 합니다.
$response = new Response();
$response->set_headers(array
'Content-Type' => 'application/pdf',
'Pragma' => 'no-cache',
));
get_header − 이전에 설정된 헤더 정보를 가져올 수 있습니다.
$response = new Response();
$response->set_header('Pragma', 'no-cache');
// returns 'no-cache'
$header = $response->get_header('Pragma');
// returns array('Pragma' => 'no-cache')
$header = $response->get_header();
body − http 응답의 본문을 설정하는 옵션을 제공합니다.
$response = new Response();
$response->body('Hi, FuelPHP');
// returns 'Hi, FuelPHP'
$body = $response->body();
send_headers− 요청 된 클라이언트에게 헤더를 보냅니다. FuelPHP는이 방법을 사용하여 클라이언트에 응답을 보냅니다. 일반적으로이 방법은 사용할 필요가 없습니다.
$response->send_headers();
Send − http 응답에서 헤더가 제한 될 수 있다는 점을 제외하면 send_headers와 동일합니다.
// send the headers as well
$response->send(true);
// only send the body
$response->send(false);
$response->send();