Flight encapsula la solicitud HTTP en un solo objeto, que puede ser accedido haciendo:
$request = Flight::request();
Cuando estás trabajando con una solicitud en una aplicación web, típicamente querrás extraer un encabezado, o un parámetro $_GET o $_POST, o quizás incluso el cuerpo de la solicitud en bruto. Flight proporciona una interfaz simple para hacer todas estas cosas.
$_GET
$_POST
Aquí hay un ejemplo de obtención de un parámetro de la cadena de consulta:
Flight::route('/search', function(){ $keyword = Flight::request()->query['keyword']; echo "Estás buscando: $keyword"; // consulta una base de datos o algo más con el $keyword });
Aquí hay un ejemplo de tal vez un formulario con un método POST:
Flight::route('POST /submit', function(){ $name = Flight::request()->data['name']; $email = Flight::request()->data['email']; echo "Has enviado: $name, $email"; // guarda en una base de datos o algo más con el $name y $email });
El objeto solicitud proporciona las siguientes propiedades:
$_SERVER
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED
HTTP_X_CLUSTER_CLIENT_IP
HTTP_FORWARDED_FOR
HTTP_FORWARDED
Puedes acceder a las propiedades query, data, cookies y files como matrices u objetos.
query
data
cookies
files
Así que, para obtener un parámetro de la cadena de consulta, puedes hacer:
$id = Flight::request()->query['id'];
O puedes hacer:
$id = Flight::request()->query->id;
Para obtener el cuerpo de la solicitud HTTP en bruto, por ejemplo al manejar solicitudes PUT, puedes hacer:
$body = Flight::request()->getBody();
Si envías una solicitud con el tipo application/json y los datos {"id": 123} estará disponible desde la propiedad data:
application/json
{"id": 123}
$id = Flight::request()->data->id;
Puedes acceder al arreglo $_GET a través de la propiedad query:
Puedes acceder al arreglo $_POST a través de la propiedad data:
$id = Flight::request()->data['id'];
Puedes acceder al arreglo $_COOKIE a través de la propiedad cookies:
$_COOKIE
$myCookieValue = Flight::request()->cookies['myCookieName'];
Hay un acceso directo disponible para acceder al arreglo $_SERVER a través del método getVar():
getVar()
$host = Flight::request()->getVar['HTTP_HOST'];
Puedes acceder a archivos subidos a través de la propiedad files:
$uploadedFile = Flight::request()->files['myFile'];
Puedes procesar cargas de archivos utilizando el framework con algunos métodos de ayuda. Básicamente se reduce a extraer los datos del archivo de la solicitud y moverlos a una nueva ubicación.
Flight::route('POST /upload', function(){ // Si tuvieras un campo de entrada como <input type="file" name="myFile"> $uploadedFileData = Flight::request()->getUploadedFiles(); $uploadedFile = $uploadedFileData['myFile']; $uploadedFile->moveTo('/path/to/uploads/' . $uploadedFile->getClientFilename()); });
Si tienes múltiples archivos subidos, puedes recorrerlos:
Flight::route('POST /upload', function(){ // Si tuvieras un campo de entrada como <input type="file" name="myFiles[]"> $uploadedFiles = Flight::request()->getUploadedFiles()['myFiles']; foreach ($uploadedFiles as $uploadedFile) { $uploadedFile->moveTo('/path/to/uploads/' . $uploadedFile->getClientFilename()); } });
Nota de Seguridad: Siempre valida y desinfecta la entrada del usuario, especialmente al tratar con cargas de archivos. Siempre valida el tipo de extensiones que permitirás que se suban, pero también debes validar los "bytes mágicos" del archivo para asegurarte de que es realmente el tipo de archivo que el usuario dice que es. Hay artículos y bibliotecas disponibles para ayudar con esto.
Puedes acceder a los encabezados de solicitud usando el método getHeader() o getHeaders():
getHeader()
getHeaders()
// Tal vez necesites el encabezado de Autorización $host = Flight::request()->getHeader('Authorization'); // o $host = Flight::request()->header('Authorization'); // Si necesitas obtener todos los encabezados $headers = Flight::request()->getHeaders(); // o $headers = Flight::request()->headers();
Puedes acceder al cuerpo de la solicitud en bruto utilizando el método getBody():
getBody()
Puedes acceder al método de solicitud utilizando la propiedad method o el método getMethod():
method
getMethod()
$method = Flight::request()->method; // en realidad llama a getMethod() $method = Flight::request()->getMethod();
Nota: El método getMethod() primero obtiene el método de $_SERVER['REQUEST_METHOD'], luego puede ser sobrescrito por $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] si existe o $_REQUEST['_method'] si existe.
$_SERVER['REQUEST_METHOD']
$_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']
$_REQUEST['_method']
Hay un par de métodos auxiliares para ensamblar partes de una URL para tu conveniencia.
Puedes acceder a la URL completa de la solicitud usando el método getFullUrl():
getFullUrl()
$url = Flight::request()->getFullUrl(); // https://example.com/some/path?foo=bar
Puedes acceder a la URL base usando el método getBaseUrl():
getBaseUrl()
$url = Flight::request()->getBaseUrl(); // Nota, sin barra final. // https://example.com
Puedes pasar una URL al método parseQuery() para analizar la cadena de consulta en un arreglo asociativo:
parseQuery()
$query = Flight::request()->parseQuery('https://example.com/some/path?foo=bar'); // ['foo' => 'bar']