Sepeda lain: perpustakaan sederhana untuk bekerja dengan permintaan HTTP

Halo semuanya.

Bekerja dengan API tidak lengkap tanpa berinteraksi dengan permintaan HTTP. Seseorang tidak mengganggu dan menggunakan array global $ _GET, $ _POST dan $ _REQUEST. Terus terang, saya melakukannya sendiri, tetapi belum lama ini saya bingung dengan kebutuhan akan semacam bungkus untuk kemudahan penggunaan. Mungkin sudah ada perpustakaan seperti itu, tetapi saya belum menemukannya, kecuali di Bitrix API (mungkin saya sudah kelihatan buruk), dan karena itu saya memutuskan untuk menulis sendiri. Selain itu, Anda harus setuju bahwa jauh lebih menyenangkan untuk menggunakan perpustakaan Anda saat bekerja dengan kode.

Perpustakaan bekerja sejauh ini dengan metode GET dan POST, serta dengan konstruksi json yang diperoleh dari php: // input. Dia juga tahu cara melakukan pemeriksaan di https dan mendapatkan tajuk.

Koneksi dan panggilan


Untuk menghubungkan perpustakaan, gunakan Komposer:

composer require ramapriya/http-request

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

use Ramapriya\Request\Request;

Verifikasi Metode


Sekarang Anda dapat menggunakan perpustakaan. Misalnya, jika Anda ingin mengetahui jenis permintaan, panggil metode GetRequestMethod () :

$method = Request::GetRequestMethod();

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

Namun, biasanya jenis metode ini diketahui sebelumnya, jadi agar tidak membuat variabel tambahan, cukup menggunakan metode untuk memeriksa get dan post- isGet () dan isPost (), masing-masing:

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

Menerima kunci


Kebetulan Anda perlu mendapatkan daftar parameter kueri (bukan nilai, tetapi kunci sendiri), ada juga dua metode untuk ini untuk Dapatkan dan Posting:

$GetParams = Request::GetParams();

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

$postParams = Request::PostParams();

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

Mendapatkan Nilai


Dan tentu saja, ada beberapa metode untuk mendapatkan nilai parameter sendiri - Get () dan Post () . Hal yang paling menarik adalah Anda bisa mendapatkan parameter individual dan seluruh array (yang, omong-omong, dikonversi ke objek - jangan tanya kenapa, saya hanya suka bekerja dengan objek):

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

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

Permintaan mentah (php: // input)


Kita juga harus memikirkan metode bekerja dengan php: // input. This isRaw () - memeriksa permintaan mentah, Raw () , yang mengembalikan string json yang dikonversi ke objek, dan RawParams () , yang mengembalikan kunci permintaan. Saya ingat ketika saya bekerja dengan Sendpulse API, saya harus menulis sesuatu seperti ini:

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

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

Tentu saja, satu variabel dapat ditiadakan.
$request = json_decode(file_get_contents('php://input'));

Tetapi Anda harus mengakui, itu terlihat agak membingungkan.

Dengan metode Raw () dan isRaw () , kode sudah menyebabkan lebih banyak kesenangan estetika:

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

Bekerja dengan header


Ada juga beberapa metode untuk bekerja dengan header di perpustakaan:

GetAllHeaders () - mendapatkan semua header.
$headers = Request::GetAllHeaders();

GetHostName () - mendapatkan nama host
$domain = Request::GetHostName();

isHttps () - periksa untuk https

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

GetUserAgent () - mendapatkan agen pengguna. Ini penting bagi seseorang.

$userAgent = Request::GetUserAgent();

Perpustakaan akan ditambah dan dimodifikasi. Kode sumber, seperti biasa, di github

Terima kasih atas perhatian Anda.

All Articles