دراجة أخرى: مكتبة بسيطة للعمل مع طلبات HTTP

تحية للجميع.

لا يكتمل العمل مع واجهة برمجة التطبيقات بدون التفاعل مع طلبات HTTP. شخص ما لا يكلف نفسه عناء ويستخدم المصفوفات العمومية $ _GET و $ _POST و $ _REQUEST. بصراحة ، لقد فعلت ذلك بنفسي ، ولكن منذ وقت ليس ببعيد كنت في حيرة من التفكير في الحاجة إلى نوع من الغلاف لسهولة الاستخدام. ربما هناك بالفعل مثل هذه المكتبات ، لكنني لم أجدها بعد ، باستثناء واجهة برمجة تطبيقات Bitrix (ربما كنت قد بحثت بشكل سيء) ، وبالتالي قررت كتابة مكتبتي الخاصة. بالإضافة إلى ذلك ، يجب أن توافق على أنه من اللطيف استخدام مكتباتك عند العمل مع التعليمات البرمجية.

تعمل المكتبة حتى الآن مع طرق GET و POST ، وكذلك مع بناء json الذي تم الحصول عليه من php: // input. وهو يعرف أيضًا كيفية إجراء عمليات التحقق على https والحصول على الرؤوس.

الاتصال والاتصال


لتوصيل المكتبة ، استخدم Composer:

composer require ramapriya/http-request

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

use Ramapriya\Request\Request;

التحقق من الطريقة


الآن يمكنك استخدام المكتبة. على سبيل المثال ، إذا كنت تريد معرفة نوع الطلب ، فاتصل بطريقة GetRequestMethod () :

$method = Request::GetRequestMethod();

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

ومع ذلك ، عادة ما يكون نوع الطريقة معروفًا مسبقًا ، لذلك حتى لا يتم إنشاء متغيرات إضافية ، يكفي استخدام طرق التحقق من get و post - isGet () و isPost () ، على التوالي:

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

استلام المفاتيح


يحدث أنك تحتاج إلى الحصول على قائمة بمعلمات الاستعلام (ليس القيم ، ولكن المفاتيح نفسها) ، هناك أيضًا طريقتان لهذا للحصول على ونشر:

$GetParams = Request::GetParams();

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

$postParams = Request::PostParams();

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

الحصول على القيم


وبالطبع ، كانت هناك بعض الطرق للحصول على قيم المعلمات نفسها - Get () و Post () . الشيء الأكثر إثارة للاهتمام هو أنه يمكنك الحصول على كل من المعلمات الفردية والصفيف بأكمله (والذي ، بالمناسبة ، يتم تحويله إلى كائن - لا تسأل لماذا ، أنا أحب العمل مع الكائنات):

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

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

الطلبات الأولية (php: // input)


يجب أن نتناول أيضًا طرق العمل باستخدام php: // input. هذا isRaw () - يتحقق من طلب خام ، Raw () ، والذي يعيد سلسلة json المحولة إلى كائن ، و RawParams () ، التي تُرجع مفاتيح الطلب. أتذكر عندما كنت أعمل مع Sendpulse API ، كان علي كتابة شيء مثل هذا:

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

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

بالطبع ، يمكن الاستغناء عن متغير واحد.
$request = json_decode(file_get_contents('php://input'));

ولكن يجب أن تعترف ، يبدو مربكًا إلى حد ما.

باستخدام طريقتين Raw () و isRaw () ، يؤدي الكود بالفعل إلى متعة أكثر جمالية:

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

العمل مع الرؤوس


هناك أيضًا عدة طرق للعمل مع الرؤوس في المكتبة:

GetAllHeaders () - الحصول على جميع الرؤوس.
$headers = Request::GetAllHeaders();

GetHostName () - الحصول على اسم المضيف
$domain = Request::GetHostName();

isHttps () - تحقق من https

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

GetUserAgent () - الحصول على وكيل مستخدم. قد يكون هذا مهمًا بالنسبة لشخص ما.

$userAgent = Request::GetUserAgent();

سيتم استكمال وتعديل المكتبة. كود المصدر ، كما هو الحال دائمًا ، على github

شكرًا لك على اهتمامك .

All Articles