Otra bicicleta: una biblioteca simple para trabajar con solicitudes HTTP

Hola a todos.

Trabajar con la API no está completo sin interactuar con las solicitudes HTTP. Alguien no se molesta y usa las matrices globales $ _GET, $ _POST y $ _REQUEST. Francamente, lo hice yo mismo, pero no hace mucho tiempo me sorprendió la idea de la necesidad de algún tipo de envoltura para facilitar su uso. Tal vez ya existan tales bibliotecas, pero aún no las he encontrado, excepto en la API de Bitrix (tal vez me he visto mal) y, por lo tanto, decidí escribir la mía. Además, debe aceptar que es mucho más agradable usar sus bibliotecas cuando trabaja con código.

La biblioteca funciona hasta ahora con los métodos GET y POST, así como con la construcción json obtenida de php: // input. También sabe cómo hacer controles en https y obtener encabezados.

Conexión y llamada


Para conectar la biblioteca, use Composer:

composer require ramapriya/http-request

require __DIR__ . '/vendor/autoload.php';

use Ramapriya\Request\Request;

Verificación del método


Ahora puedes usar la biblioteca. Por ejemplo, si desea averiguar el tipo de solicitud, llame al método GetRequestMethod () :

$method = Request::GetRequestMethod();

switch($method) {
    case 'GET':
        //  
        break;
    case 'POST':
        //  
        break;
}

Sin embargo, por lo general, el tipo de método se conoce de antemano, por lo que para no crear variables adicionales, es suficiente usar los métodos para verificar get y post - isGet () e isPost (), respectivamente:

if(Request::isPost() !== false) {
   //  
} else if(Request::isGet() !== false) {
   //  
}

Recibiendo llaves


Sucede que necesita obtener una lista de parámetros de consulta (no los valores, sino las claves en sí), también hay dos métodos para esto para Obtener y Publicar:

$GetParams = Request::GetParams();

if(in_array($needle, $GetParams)) {
   //  
}

$postParams = Request::PostParams();

if(in_array($needle, $postParams)) {
   //  
}

Obteniendo valores


Y, por supuesto, había algunos métodos para obtener los valores de los parámetros: Get () y Post () . Lo más interesante es que puede obtener parámetros individuales y toda la matriz (que, por cierto, se convierte en un objeto; no pregunte por qué, solo me gusta trabajar con objetos):

if(!empty(Request::Get('user'))) {
   $user = Request::Get('user');
}

$request = Request::Post();
if(Request::isPost() && !empty($request)) {
   //  
}

Solicitudes sin formato (php: // input)


También debemos detenernos en los métodos de trabajo con php: // input. Esto esRaw () : busca una solicitud sin procesar , Raw () , que devuelve la cadena json convertida en un objeto, y RawParams () , que devuelve las claves de solicitud. Recuerdo que cuando trabajaba con la API Sendpulse, tenía que escribir algo como esto:

$rawRequest = file_get_contents('php://input');
$request = json_decode($rawRequest);

if(!empty($request)) {
   //  
}

Por supuesto, se puede prescindir de una variable.
$request = json_decode(file_get_contents('php://input'));

Pero debes admitir que parece bastante confuso.

Con los métodos Raw () e isRaw () , el código ya causa más placer estético:

if(Request::isRaw() === true) {
$request = Request::Raw();
}

Trabajar con encabezados


También hay varios métodos para trabajar con encabezados en la biblioteca:

GetAllHeaders () : obtener todos los encabezados.
$headers = Request::GetAllHeaders();

GetHostName () : obtiene el nombre de host
$domain = Request::GetHostName();

isHttps () - busca https

if(Request::isHttps() !== true) {
   die("Application works only with HTTPS!");
}

GetUserAgent () : obtiene el agente de usuario. Esto puede ser importante para alguien.

$userAgent = Request::GetUserAgent();

La biblioteca se complementará y modificará. Código fuente, como siempre, en github

Gracias por su atención.

All Articles