Outra bicicleta: uma biblioteca simples para trabalhar com solicitações HTTP

Olá a todos.

O trabalho com a API não está completo sem interagir com solicitações HTTP. Alguém não se incomoda e usa as matrizes globais $ _GET, $ _POST e $ _REQUEST. Sinceramente, eu mesmo fiz isso, mas não há muito tempo fiquei intrigado com o pensamento da necessidade de algum tipo de embalagem para facilitar o uso. Talvez já exista essas bibliotecas, mas ainda não as encontrei, exceto na API do Bitrix (talvez eu pareça mal) e, por isso, decidi escrever minhas próprias. Além disso, você deve concordar que é muito mais agradável usar suas bibliotecas ao trabalhar com código.

A biblioteca trabalha até agora com os métodos GET e POST, bem como com a construção json obtida a partir de php: // input. Ele também sabe como verificar o https e obter cabeçalhos.

Conexão e chamada


Para conectar a biblioteca, use o Composer:

composer require ramapriya/http-request

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

use Ramapriya\Request\Request;

Verificação de método


Agora você pode usar a biblioteca. Por exemplo, se você deseja descobrir o tipo de solicitação, chame o método GetRequestMethod () :

$method = Request::GetRequestMethod();

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

No entanto, geralmente o tipo do método é conhecido antecipadamente; portanto, para não criar variáveis ​​adicionais, basta usar os métodos para verificar get e post - isGet () e isPost (), respectivamente:

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

Recebendo chaves


Acontece que você precisa obter uma lista de parâmetros de consulta (não os valores, mas as próprias chaves), também existem dois métodos para Get e Post:

$GetParams = Request::GetParams();

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

$postParams = Request::PostParams();

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

Obtendo valores


E, é claro, havia alguns métodos para obter os próprios valores dos parâmetros - Get () e Post () . O mais interessante é que você pode obter parâmetros individuais e toda a matriz (que, a propósito, é convertida em um objeto - não pergunte por que, eu apenas gosto de trabalhar com objetos):

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

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

Solicitações brutas (php: // input)


Também devemos nos debruçar sobre os métodos de trabalho com php: // input. This isRaw () - verifica uma solicitação bruta, Raw () , que retorna a string json convertida em um objeto, e RawParams () , que retorna as chaves da solicitação. Lembro que quando estava trabalhando com a API Sendpulse, tive que escrever algo como isto:

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

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

Obviamente, uma variável pode ser dispensada
$request = json_decode(file_get_contents('php://input'));

Mas você deve admitir, parece um pouco confuso.

Com os métodos Raw () e isRaw () , o código já causa mais prazer estético:

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

Trabalhar com cabeçalhos


Existem também vários métodos para trabalhar com cabeçalhos na biblioteca:

GetAllHeaders () - obtendo todos os cabeçalhos.
$headers = Request::GetAllHeaders();

GetHostName () - obtendo o nome do host
$domain = Request::GetHostName();

isHttps () - verifique se há https

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

GetUserAgent () - obtendo o agente do usuário. Isso pode ser importante para alguém.

$userAgent = Request::GetUserAgent();

A biblioteca será complementada e modificada. Código fonte, como sempre, no github

Obrigado por sua atenção.

All Articles