FuelPHP - Solicitudes y respuesta
La solicitud HTTP y la respuesta HTTP juegan un papel importante en cualquier aplicación web. Necesitamos obtener los detalles completos de la solicitud http para procesarla correctamente. Una vez procesados, debemos enviar los datos procesados al cliente a través de la respuesta http.
FuelPHP proporciona excelentes Request y Responseclass para leer y escribir solicitudes HTTP y respuestas HTTP respectivamente. Aprendamos sobre ambosRequest y Response clase en este capítulo.
Solicitud
En una aplicación web típica, la aplicación necesita analizar los detalles de la solicitud actual. La clase de solicitud proporciona métodos simples para analizar la solicitud actual para ser procesada por la aplicación. Request también proporciona una opción para crear una nueva solicitud actuando como un cliente http.
La creación de una nueva solicitud permite que la aplicación solicite otra parte de la aplicación o completamente otra aplicación y muestre el resultado. Aprendamos a analizar la solicitud entrante en este capítulo y aprendamos a crear una nueva solicitud en el capítulo Solicitud de HMVC.
Analizar una solicitud
La clase de solicitud proporciona tres métodos para obtener los detalles de la solicitud http. Son los siguientes,
active - Es un método estático, que devuelve la solicitud http activa actual.
$currentRequest = Request::active();
param: devuelve el valor del parámetro especificado. Contiene dos argumentos. El primer argumento es el nombre del parámetro y el segundo argumento es el valor a devolver, si el parámetro no está disponible en la solicitud http actual.
$param = Request::active()->param('employee_name', 'none');
params: es lo mismo que param excepto que devuelve todos los parámetros como una matriz.
$params = Request::active()->params();
Ejemplo
Creemos un formulario simple y procesemos el formulario usando la clase de solicitud.
Step 1- Cree una nueva acción, action_request en el controlador de empleados.
public function action_request() {
}
Step 2 - Llame a los métodos de solicitud para obtener todos los parámetros de la solicitud actual.
public function action_request() {
$params = Request::active()->params();
}
Step 3 - Volcar la matriz de parámetros recuperada.
public function action_request() {
$params = Request::active()->params();
echo dump($params);
}
Step 4- Cambie el enrutamiento para incluir los parámetros en el archivo de configuración de ruta, fuel / app / config / routes.php
'employee/request(/:name)?' => array('employee/request', 'name' => 'name'),
Ahora, solicitando la nueva acción, http: // localhost: 8080 / employee / request / Jon , mostrará la siguiente respuesta.
Respuesta
La clase de respuesta proporciona opciones para crear una respuesta http. De forma predeterminada, no necesitamos usar una clase de respuesta directamente en la mayoría de las situaciones. En su lugar, usamos Ver (que aprenderemos en el próximo capítulo) para crear una respuesta http. Ver oculta la respuesta http al desarrollador y envía la respuesta al cliente mediante la clase de respuesta subyacente . En una situación avanzada, usamos la clase Response directamente y creamos una respuesta http completa.
Crear una respuesta
La respuesta consta de encabezados y cuerpo. El encabezado principal es el código de estado http. El código de estado HTTP son códigos estándar definidos en el protocolo HTTP para describir la respuesta. Por ejemplo, un código de estado, 200 significa que la solicitud se realizó correctamente.
La clase de respuesta proporciona tres argumentos para crear la respuesta http,
- $body - cuerpo de la respuesta http
- $status_code - código de estado de la respuesta http
- $headers - encabezados opcionales como matriz
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
Creemos una nueva acción, action_response en el controlador de empleados de la siguiente manera.
public function action_response() {
$body = "Hi, FuelPHP";
$headers = array (
'Content-Type' => 'text/html',
);
$response = new Response($body, 200, $headers);
return $response;
}
Resultado
Métodos
La clase de respuesta proporciona muchos métodos para manipular las respuestas http. Son los siguientes,
forge - Es lo mismo que el constructor de clases de respuesta como se ve arriba.
return Response::forge("Hi, FuelPHP", 404);
redirect- Ofrece la opción de redirigir a una URL en lugar de enviar una respuesta. Contiene los siguientes argumentos,
a.url- URL de destino b. método - métodos de redirección. ubicación (predeterminado) y actualizar c.redirect_code - código de estado http. El valor predeterminado es 302.
// use a URL
Response::redirect('http://some-domain/index', 'refresh');
// or use a relative URI
Response::redirect('employee/list');
redirect_back- Es similar al método de redirección excepto que redirige a la página anterior. Podemos especificar la página de redireccionamiento, si no hay una página posterior disponible.
// If there is no back page, go to the employee list page
Response::redirect_back('/employee/list', 'refresh');
set_status - Proporciona una opción para configurar el código de estado http.
$response = new Response();
$response->set_status(404);
set_header - Proporciona una opción para configurar los encabezados 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- Es lo mismo que set_header, excepto que proporciona una opción para establecer varios encabezados mediante matriz.
$response = new Response();
$response->set_headers(array
'Content-Type' => 'application/pdf',
'Pragma' => 'no-cache',
));
get_header - Permite obtener los detalles del encabezado del conjunto anterior.
$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 - Proporciona una opción para establecer el cuerpo de la respuesta http.
$response = new Response();
$response->body('Hi, FuelPHP');
// returns 'Hi, FuelPHP'
$body = $response->body();
send_headers- Envía las cabeceras al cliente solicitado. FuelPHP usa este método para enviar la respuesta al cliente. Normalmente, no necesitamos utilizar este método.
$response->send_headers();
Send - Igual que send_headers, excepto que los encabezados pueden estar restringidos en la respuesta http.
// send the headers as well
$response->send(true);
// only send the body
$response->send(false);
$response->send();