Ein weiteres Fahrrad: eine einfache Bibliothek für die Arbeit mit HTTP-Anfragen

Hallo alle zusammen.

Die Arbeit mit der API ist ohne Interaktion mit HTTP-Anforderungen nicht abgeschlossen. Jemand kümmert sich nicht darum und verwendet die globalen Arrays $ _GET, $ _POST und $ _REQUEST. Ehrlich gesagt habe ich es selbst gemacht, aber vor nicht allzu langer Zeit war ich verwirrt über den Gedanken, dass eine Art Wrapper für eine einfache Bedienung erforderlich ist. Vielleicht gibt es bereits solche Bibliotheken, aber ich habe sie noch nicht gefunden, außer in der Bitrix-API (vielleicht habe ich schlecht ausgesehen), und deshalb habe ich beschlossen, meine eigenen zu schreiben. Darüber hinaus sollten Sie zustimmen, dass es viel angenehmer ist, Ihre Bibliotheken zu verwenden, wenn Sie mit Code arbeiten.

Die Bibliothek arbeitet bisher mit den Methoden GET und POST sowie mit der aus php: // input erhaltenen json-Konstruktion. Er weiß auch, wie man https überprüft und Header erhält.

Verbindung und Anruf


Verwenden Sie Composer, um die Bibliothek zu verbinden:

composer require ramapriya/http-request

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

use Ramapriya\Request\Request;

Methodenüberprüfung


Jetzt können Sie die Bibliothek verwenden. Wenn Sie beispielsweise den Anforderungstyp ermitteln möchten, rufen Sie die GetRequestMethod () -Methode auf :

$method = Request::GetRequestMethod();

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

Normalerweise ist der Typ der Methode jedoch im Voraus bekannt. Um keine zusätzlichen Variablen zu erstellen, reicht es aus, die Methoden zum Überprüfen von get und post- isGet () bzw. isPost () zu verwenden:

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

Schlüssel empfangen


Es kommt vor, dass Sie eine Liste der Abfrageparameter abrufen müssen (nicht die Werte, sondern die Schlüssel selbst). Für Get und Post gibt es hierfür auch zwei Methoden:

$GetParams = Request::GetParams();

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

$postParams = Request::PostParams();

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

Werte bekommen


Und natürlich gab es einige Methoden, um die Parameterwerte selbst abzurufen - Get () und Post () . Das Interessanteste ist, dass Sie sowohl einzelne Parameter als auch das gesamte Array abrufen können (das übrigens in ein Objekt konvertiert wird - fragen Sie nicht warum, ich arbeite einfach gerne mit Objekten):

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

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

Rohanforderungen (php: // Eingabe)


Wir sollten uns auch mit den Methoden der Arbeit mit php: // input befassen. This isRaw () - sucht nach einer Rohanforderung , Raw () , die die in ein Objekt konvertierte JSON- Zeichenfolge zurückgibt, und RawParams () , die die Anforderungsschlüssel zurückgibt. Ich erinnere mich, als ich mit der Sendpulse-API arbeitete, musste ich so etwas schreiben:

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

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

Natürlich könnte auf eine Variable verzichtet werden.
$request = json_decode(file_get_contents('php://input'));

Aber Sie müssen zugeben, es sieht ziemlich verwirrend aus.

Mit den Methoden Raw () und isRaw () sorgt der Code bereits für mehr ästhetisches Vergnügen:

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

Arbeiten Sie mit Headern


Es gibt auch verschiedene Methoden zum Arbeiten mit Headern in der Bibliothek:

GetAllHeaders () - Abrufen aller Header.
$headers = Request::GetAllHeaders();

GetHostName () - Abrufen des Hostnamens
$domain = Request::GetHostName();

isHttps () - nach https suchen

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

GetUserAgent () - Benutzeragent abrufen . Dies kann für jemanden wichtig sein.

$userAgent = Request::GetUserAgent();

Die Bibliothek wird ergänzt und geändert. Quellcode wie immer auf Github

Vielen Dank für Ihre Aufmerksamkeit.

All Articles