Учебники

FuelPHP — Запросы и ответы

HTTP-запрос и HTTP-ответ играют важную роль в любом веб-приложении. Нам нужно получить полную информацию о запросе http, чтобы правильно его обработать. После обработки нам нужно отправить обработанные данные клиенту через HTTP-ответ.

FuelPHP предоставляет превосходный класс Request и Response для чтения и записи HTTP-запроса и HTTP-ответа соответственно. Давайте узнаем о классах Request и Response в этой главе.

Запрос

В типичном веб-приложении приложению необходимо проанализировать детали текущего запроса. Класс запроса предоставляет простые методы для анализа текущего запроса, обрабатываемого приложением. Запрос также предоставляет возможность создать новый запрос, выступая в качестве http-клиента.

Создание нового запроса позволяет приложению запрашивать другую часть приложения или совсем другое приложение и отображать результат. Давайте узнаем, как разобрать входящий запрос в этой главе, и научимся создавать новый запрос в главе «Запрос HMVC».

Разбор запроса

Класс запроса предоставляет три метода для получения подробностей http-запроса. Они заключаются в следующем,

active — это статический метод, который возвращает текущий активный http-запрос.

$currentRequest = Request::active();

param — возвращает значение указанного параметра. Он содержит два аргумента. Первый аргумент — это имя параметра, а второй аргумент — это значение, которое нужно вернуть, если параметр не доступен в текущем HTTP-запросе.

$param = Request::active()->param('employee_name', 'none');

params — Это то же самое, что и param, за исключением того, что он возвращает все параметры в виде массива.

$params = Request::active()->params();

пример

Давайте создадим простую форму и обработаем форму, используя класс запроса.

Шаг 1 — Создайте новое действие action_request в контроллере сотрудника.

public function action_request() { 
}

Шаг 2 — Вызовите методы запроса, чтобы получить все параметры текущего запроса.

public function action_request() { 
   $params = Request::active()->params(); 
}

Шаг 3 — Дамп извлеченный массив параметров.

public function action_request() { 
   $params = Request::active()->params();  
   echo dump($params); 
}

Шаг 4 — Измените маршрут, включив параметры в файл конфигурации маршрута, fuel / app / config / rout.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 означает, что запрос выполнен успешно.

Класс Response предоставляет три аргумента для создания ответа http,

  • $ body — тело ответа http

  • $ status_code — код статуса ответа http

  • $ headers — необязательные заголовки в виде массива

$ 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; 
}

Результат

Действие Ответ

методы

Класс Response предоставляет множество методов для манипулирования HTTP-ответами. Они заключаются в следующем,

forge — это то же самое, что конструктор класса ответа, как показано выше.

return Response::forge("Hi, FuelPHP", 404);

redirect — предоставляет возможность перенаправления на URL вместо отправки ответа. Он содержит следующие аргументы,

a.url — целевой URL b. Метод — методы перенаправления. местоположение (по умолчанию) и обновление 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 — То же, что send_headers, за исключением того, что заголовки могут быть ограничены в ответе http.