كيفية استخدام Geekflare API مع عملاء PHP
نشرت: 2022-10-25في هذا الدليل ، سنتعرف على عملاء PHP المختلفين الذين يمكنك استخدامهم للاتصال بواجهة برمجة تطبيقات Geekflare.
على وجه التحديد ، سنغطي استخدام Geekflare API مع وظيفة file_get_contents
و Guzzle و HTTPful وعميل HTTPS من Symfony.
ما هو Geekflare API؟
يوفر Geekflare مجموعة من الأدوات المجانية التي يمكنك استخدامها لمراقبة أداء موقع الويب الخاص بك. تتضمن هذه الأدوات محلل ارتباط مقطوع ووقت التحميل ومدقق DNS. يمكن الوصول إلى هذه الأدوات عبر الإنترنت عبر واجهة الويب أو واجهة برمجة التطبيقات.
تعتمد واجهة برمجة التطبيقات على HTTP ويمكن الوصول إليها من أي لغة برمجة باستخدام مكتبة عميل HTTP. تحتوي واجهة برمجة التطبيقات على طبقة مجانية سخية يمكنك البدء في استخدامها دون الحاجة إلى تقديم معلومات الدفع.
ما سنقوم ببنائه
سنقوم بكتابة برنامج نصي ، قابل للتنفيذ من سطر الأوامر ، والذي سيحسب الوقت الذي يستغرقه تحميل موقع Google على الويب وطباعته على الجهاز. سنقوم بتنفيذ هذا البرنامج البسيط باستخدام عملاء PHP HTTP مختلفين لتوضيح كيف يبدو استخدام واجهة برمجة التطبيقات.
على وجه التحديد ، سنستخدم الوظائف المضمنة - file_get_contents()
و php_curl
، وامتداد Guzzle PHP. مهما كانت هذه الأمثلة بسيطة ، فإنها توضح المفاهيم الأساسية لاستخدام Geekflare API.
المتطلبات الأساسية
للمتابعة ، ستحتاج إلى معرفة PHP مسبقًا وتثبيتها على جهاز الكمبيوتر الخاص بك. بالإضافة إلى ذلك ، سوف تحتاج إلى Composer لإدارة الامتدادات.
أخيرًا ، ستحتاج أيضًا إلى محرر نصوص لكتابة التعليمات البرمجية. في حالتي ، سأستخدم Visual Studio Code ، محرر نصوص مفتوح المصدر شهير من Microsoft. يمكنك تنزيله من موقع Visual Studio Code.
نظرة عامة على Geekflare API
تحتوي واجهة برمجة تطبيقات Geekflare على نقاط نهاية مختلفة بناءً على ما تريد القيام به. يمكن العثور على القائمة الكاملة لنقاط النهاية والوثائق المرتبطة بها في صفحة التوثيق.
إنشاء حساب Geekflare
لبدء استخدام واجهة برمجة التطبيقات ، ستحتاج إلى إنشاء حساب بالانتقال إلى الصفحة المقصودة لواجهة برمجة التطبيقات والنقر فوق زر التسجيل. بعد اكتمال التسجيل ، سيتم نقلك إلى لوحة القيادة ، حيث سترى مفتاح API الخاص بك. يجب أن تكون لوحة القيادة مثل الصورة أدناه. لقد حجبت مفتاح API الخاص بي لأسباب أمنية.

في كل طلب API تقدمه ، ستحتاج إلى توفير هذا المفتاح كرأس طلب. بعد قليل سترى كيف يمكن القيام بذلك.
مع إنشاء حساب Geekflare وتثبيت PHP ، يمكننا البدء في إنشاء المشروع.
إنشاء مجلد المشروع
أولاً ، قم بإنشاء مجلد حيث سنقوم بتخزين ملفات المشروع. بعد ذلك ، قم بإنشاء الملفات التالية
-
.env
-
with_curl.php
-
with_file_get_contents.php
-
with_guzzle.php
بعد ذلك ، قم بتشغيل الأمر التالي لتثبيت vlucas/phpdotenv
و guzzlehttp/guzzle
composer require vlucas/phpdotenv guzzlehttp/guzzle
في هذه المرحلة ، يجب أن يبدو مجلد مشروعك كما يلي:

افتح الآن ملف .env
وأضف السطر التالي من التعليمات البرمجية ، واستبدل <your-api-key>
بمفتاح API الفعلي من لوحة معلومات Geekflare:
API_KEY=<your-api-key>
باستخدام file_get_contents ()
الطريقة الأولى التي يمكننا استخدامها لعمل طلبات HTTP هي استدعاء دالة file_get_contents()
المضمنة في PHP. توقيع الوظيفة لوظيفة file_get_contents()
هو كما يلي:
file_get_contents(path, include_path, context)
بينما تُستخدم الطريقة غالبًا لقراءة محتويات ملف في التخزين المحلي ، يمكننا استخدامها لقراءة مورد ويب ، مثل البيانات التي يتم إرجاعها بواسطة نقطة نهاية API.
الآن للبدء ، افتح with_file_get_contents.php
وأضف كود PHP المرجعي.
<?php // all the code to be inserted here ?>
بعد ذلك ، يمكننا البدء في تحميل الامتدادات. أضف السطر التالي من التعليمات البرمجية إلى ملفك
require_once('vendor/autoload.php');
بعد ذلك ، يمكننا تحميل المتغيرات البيئية الخاصة بنا ، والتي تشمل مفتاح API
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
ثم يمكننا تحديد الحمولة. ستكون هذه البيانات التي سنرسلها كجزء من نص الطلب
$payload = json_encode([ "url" => "https://www.google.com", "proxyCountry" => "us", "followRedirect" => true ]);
لقد أنشأنا متغير حمولة وخصصناه لسلسلة JSON تحتوي على url
و proxyCountry
و followRedirect
كخصائص.
تحدد خاصية url
صفحة الويب التي نريد التحقق من وقت تحميلها.
proxyCountry
هو موقع الخادم الذي نريد استخدامه لتقديم الطلب. في هذه الحالة ، نستخدم خادم الولايات المتحدة الأمريكية ، ولكن يمكنك الاختيار من بين الهند والصين والمملكة المتحدة وفرنسا. يمكنك قراءة الوثائق لمزيد من التفاصيل.
ثم تحدد followRedirect
ما إذا كان يجب على الخادم الوكيل اتباع أي عمليات إعادة توجيه وقياس وقت الاستجابة للاستجابة النهائية أو إعادة التوجيه الأولى.
بعد ذلك ، يمكننا إنشاء خيارات من شأنها تهيئة طلبنا عن طريق إضافة هذا الرمز:
$options = [ "http" => [ "method" => "POST", "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']), "content" => $payload ] ];
من خلال القيام بذلك ، أنشأنا كائن خيارات يحدد أن طريقة HTTP الخاصة بنا هي POST ، ولدينا رأس يحدد خاصيتين ، نوع المحتوى مثل JSON x-api-key
API الذي حددته في .env
وتم تحميله كمتغير بيئي.
بعد ذلك ، يمكننا تقديم الطلب عن طريق إنشاء دفق حيث سيتم كتابة خياراتنا إلى:
$context = stream_context_create($options);
بعد ذلك ، نسمي طريقة file_get_contents()
لعمل الطلب وتخزين الاستجابة كمتغير.
$response = file_get_contents("https://api.geekflare.com/loadtime", false, $context);
قدمنا الطلب إلى https://api.geekflare.com/loadtime
. خطأ يخبر PHP بعدم استخدام المسار. ونمرر السياق الذي أنشأناه إلى الطريقة.
لعرض الاستجابة ، سنستخدم الإخراج على النحو التالي.
echo "Loadtime: " . json_decode($response)->data->total . "\n";
في نهاية هذا ، يجب أن يبدو ملفك كما يلي:
<?php require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $payload = json_encode([ "url" => "https://www.google.com", "proxyCountry" => "us", "followRedirect" => true ]); $options = [ "http" => [ "method" => "POST", "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']), "content" => $payload ] ]; $context = stream_context_create($options); $response = file_get_contents("https://api.geekflare.com/loadtime", false, $context); echo "Loadtime: " . json_decode($response)->data->total . "\n"; ?>
عند تشغيل الملف باستخدام الأمر التالي:
php with_file_get_contents.php
سوف تحصل على الناتج التالي

Loadtime: 81
باستخدام cURL
cURL هي أداة مساعدة لسطر الأوامر تُستخدم لتقديم طلبات عنوان URL من جانب العميل. في PHP ، يمكن استخدامه باستخدام الأداة المساعدة php-curl. لبدء استخدامه ، افتح الملف with_curl.php
PHP
<?php // all new code will be written here ?>
ثم دعنا نستورد الامتدادات ونحمّل المتغير البيئي API_KEY المحدد في ملف .env
require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
بعد ذلك ، سننشئ متغيرًا لتخزين رؤوس كائننا كمصفوفة حيث يكون كل عنصر فردي في المصفوفة رأسًا محددًا.
$header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];
حددنا رأسين ، أحدهما لنوع المحتوى والآخر لمفتاح API.
ثم يمكننا تحديد نص الطلب.
$body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]);
بعد ذلك ، يمكننا إنشاء جلسة تجعيد باستخدام وظيفة curl_init()
. يمكننا تمرير عنوان URL الذي نريد تقديم الطلب إليه كوسيطة لاستدعاء الوظيفة.
$ch = curl_init("https://api.geekflare.com/loadtime");
الآن يمكننا تجميع كل شيء معًا من خلال تحديد الرأس والجسم كخيارات للجلسة. لهذا ، سوف نستخدم الدالة curl_setopt_array()
curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $body ]);
لتقديم الطلب ، سنقوم باستدعاء الدالة curl_exec()
$response = curl_exec($ch);
قمنا بتخزين الاستجابة في متغير $response
، لذا يمكننا إغلاق الجلسة لتحرير موارد النظام التي تستخدمها الجلسة.
curl_close($ch);
أخيرًا ، يمكننا طباعة الرد على الشاشة باستخدام var_dump
.
var_dump($response);
في النهاية ، يجب أن يبدو ملف البرنامج النصي الخاص بك بهذا الشكل
<?php require_once('vendor/autoload.php'); $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']]; $body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]); $ch = curl_init("https://api.geekflare.com/loadtime"); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_HTTPHEADER => $header, CURLOPT_POSTFIELDS => $body ]); $response = curl_exec($ch); curl_close($ch); var_dump($response); ?>
عندما نقوم بتشغيل السكربت باستخدام php with_curl.php
، يجب أن تحصل على المخرجات التالية:
{"timestamp":1666083632547,"apiStatus":"success","apiCode":200,"meta":{"url":"google.com","followRedirect":true,"redirectedURL":"https://www.google.com/?gws_rd=ssl","test":{"id":"d20h1hb409qbfwm0g534l51asugpi5hl"}},"data":{"dns":12,"connect":17,"tls":6,"send":21,"wait":110,"total":114}}bool(true)
تم إكمال الطلب بنجاح ، واستجابت API ببيانات JSON0. يمكنك استخدام هذه البيانات كما يحلو لك.
مع أسرف في الشراب
في الجزء الأخير من هذا البرنامج التعليمي ، سنستخدم Guzzle لكتابة البرنامج النصي. كما هو الحال دائمًا ، نبدأ بإدخال نموذج PHP المعياري داخل with_guzzle.php
<?php // all the code will go here ?>
بعد ذلك ، يمكننا استيراد الامتدادات وكائنات Guzzle Client و Request Objects وتحميل المتغيرات البيئية.
require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;
بعد ذلك ، يمكننا تحميل المتغيرات البيئية.
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
بعد ذلك ، يمكننا إنشاء مثيل لعميل Guzzle HTTP
$client = new GuzzleHttp\Client();
ثم يمكننا المتابعة لإنشاء رؤوس لطلبنا
$headers = [ 'x-api-key' => $_ENV['API_KEY'], 'Content-Type' => 'application/json' ];
بعد ذلك ، يمكننا تحديد جسم الطلب
$body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]);
يمكننا بعد ذلك تقديم الطلب عن طريق إنشاء فئة الطلب وتمرير عنوان URL لنقطة نهاية واجهة برمجة التطبيقات والرأس والجسم.
$request = new Request('POST', 'https://api.geekflare.com/loadtime', $headers, $body);
ثم يمكننا إرسال الطلب عن طريق إضافة هذا السطر من الكود:
$response = $client->sendAsync($request)->wait();
بمجرد إرسال الطلب ، يمكننا استلام نص الطلب على النحو التالي
$response_body = $response->getBody();
في النهاية ، يمكننا فك شفرة استجابة JSON وطباعة وقت التحميل
echo "Loadtime: " . json_decode($response_body)->data->total . "\n";
لذلك ، في النهاية ، يجب أن يبدو الملف كما يلي:
<?php require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $client = new GuzzleHttp\Client(); $headers = [ 'x-api-key' => $_ENV['API_KEY'], 'Content-Type' => 'application/json' ]; $body = json_encode([ "url" => "google.com", "proxyCountry" => "us", "followRedirect" => true ]); $request = new Request('POST', 'https://api.geekflare.com/loadtime', $headers, $body); $response = $client->sendAsync($request)->wait(); $response_body = $response->getBody(); echo "Loadtime: " . json_decode($response_body)->data->total . "\n"; ?>
وعند تنفيذ السكربت باستخدام الأمر التالي:
$php with_guzzle.php
وسترى الرد:
Loadtime: 130
استنتاج
في هذه المقالة ، استعرضنا العملاء المختلفين الذين قد ترغب في استخدامهم عند إنشاء مشروع PHP يتطلب واجهة برمجة تطبيقات Geekflare.
بينما تستخدم البرامج النصية في هذا المشروع سطر الأوامر باعتباره الشكل الأساسي للإخراج ، يمكن لمشاريع العالم الحقيقي تقديم الاستجابة على صفحة ويب أو كتابتها في ملف. كانت أمثلة البرامج النصية في هذه المقالة بسيطة ، لكنها توضح المفاهيم الأساسية لاستخدام Geekflare API. لاستخدام واجهات برمجة تطبيقات مختلفة ، يمكنك تغيير نقطة النهاية وتمرير خيارات مختلفة في نص الطلب.
قد تكون مهتمًا أيضًا بكيفية استخدام Geekflare DNS Lookup API في Javascript.