The Pokedex Project(6) — Creando funciones para obtener información de la petición(Request).
Cuando el usuario hace una petición(Request) a nuestro Pokedex, necesitaremos saber si ha mandado parámetros, que método es para validarlo en nuestra lógica de negocio, en el caso de seguridad podemos obtener los Headers de la petición y validarlos en nuestra app, si tiene o no tokens de seguridad.
Para lograr esto tendremos que modificar nuestra clase Request y agregar estos métodos.
Función para saber el método del Request.
Esta función nos puede servir de utilidad si queremos validar que tipo de método es el Request(GET, POST, PUT, DELETE) y ejecutar ciertas acciones dependiendo nuestra lógica de negocio.
Para esto modificaremos la clase Request(src\Utils) y agregamos el siguiente método:
Copiar código:public function isMethod(string $method)
{
return (strtoupper($method) == $_SERVER['REQUEST_METHOD']);
}
Este método simplemente compara el parámetro que le mandamos($method) contra el ‘Request Method’ de la petición y regresara un booleano(true o false).
Para implementarlo en nuestro código simplemente lo hacemos de esta manera:
Copiar código:$request = new \Utils\Request();if ($request->isMethod('post')) { ///Nuestra lógica de negocio aquí ...
}
Obteniendo los parámetros del Request.
Esta funcionalidad es el pan de cada día en nuestras apps. El usuario por algún motivo va a necesitar mandar información a nuestra app; esta información se puede mandar a la url de nuestra app por parámetros. Necesitaremos definir los parámetros que mandan en la url, por medio de query strings(param1=1¶m2=2) o por el body de la petición que seria en caso de que manden un formulario completo.
Modificamos nuestra clase Request con lo siguiente:
Copiar código:public function getUrlParams($castParamsToObject = false)
{
return ($castParamsToObject) ? (object) $_REQUEST : $_REQUEST;
}
Por medio de la super global $_REQUEST obtendremos los parámetros que nos manden por la url en forma de array asociativo([‘param1’ => 1, ‘param2’ =>2]); también le pondremos la opción de convertir ese array asociativo a objeto para acceder con la notación de ->, como si fuera una propiedad de una clase.
Para implementar este método simplemente haremos lo siguiente:
Copiar código:$request = new \Utils\Request();$params = $request->getUrlParams();
var_dump($params['param1']);ó$params = $request->getUrlParams(true);
var_dump($params->param1);
Obteniendo los Headers de la URL
Si queremos obtener información de los headers de la url, para usarlos en alguna parte de nuestra app.
Modificamos nuestra clase Request:
Copiar código:public function getHeaders()
{
return getallheaders();
}
Este método encapsula la función “getallheaders()” de PHP, la información que tenga en los Headers del Request lo transformará en un array asociativo.
Para implementar este método haremos lo siguiente:
Copiar código:$request = new \Utils\Request();$headers = $request->getHeaders();
var_dump($headers['Authorization']);
Agregando un helper para la clase Request
Agregaremos un helper para nuestra clase Request para que sea de fácil acceso en nuestra app.
Modificamos el archivo helpers.php(src\Utils):
Copiar código:use Utils\Request;
if (! function_exists('request')) {
function request()
{
return new Request();
}
}
Y lo probamos en nuestro código:
Copiar código:request()->getUrlParams();
Pueden consultar el código de esta publicación en este repositorio: https://github.com/krsrk/pokedex-vanilla-php
Nuestra siguiente publicación ya esta lista y la puedes revisar aquí: https://link.medium.com/cPVmQ0GXZ9. En ella crearemos un método en la clase Response para que nos regrese una respuesta de una petición en JSON.
Si les gusto la publicación denle claps, likes y comentarios.