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&param2=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.

--

--

Chris Lopez
Chris Lopez

Written by Chris Lopez

Laravel, PHP, Python, Js, Vue Developer

No responses yet