التعامل مع استجابات API وأخطائها
تحققوا من رموز حالة HTTP وتعاملوا مع الأخطاء وحلّلوا حمولات API
التعامل مع استجابات API وأخطائها درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
التحقق من رمز حالة HTTP
تحقّق دائمًا من رمز حالة HTTP قبل معالجة محتوى الاستجابة.
<?php
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
throw new RuntimeException("API error: HTTP $statusCode");
}تحليل استجابة JSON
فكّ ترميز نص JSON في الاستجابة وتعامل مع أخطاء التحليل.
<?php
$body = curl_exec($ch);
$data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
// $data is now a PHP arrayمحتوى استجابات الأخطاء
تعيد واجهات API غالبًا تفاصيل الأخطاء في المحتوى حتى مع استجابات 4xx و5xx. حلّل المحتوى وسجّله دائمًا عند حدوث الأخطاء.
<?php
if ($statusCode >= 400) {
$err = json_decode($body, true);
$msg = $err["message"] ?? "Unknown API error";
throw new RuntimeException("API $statusCode: $msg");
}أخطاء نقل cURL
تختلف أخطاء الشبكة، مثل فشل DNS وانتهاء المهلة، عن أخطاء HTTP. تحقّق أولًا من curl_errno()، ثم من حالة HTTP.
<?php
if (curl_errno($ch)) {
throw new RuntimeException("Transport error: ".curl_error($ch));
}التغليف في دالة مساعدة
غلّف إعداد cURL وتنفيذه ومعالجة أخطائه داخل دالة قابلة لإعادة الاستخدام.
<?php
function httpGet(string $url, string $token): array {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$errno = curl_errno($ch);
curl_close($ch);
if ($errno) throw new RuntimeException(curl_strerror($errno));
if ($status >= 400) throw new RuntimeException("HTTP $status");
return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
}منطق إعادة المحاولة
بالنسبة إلى الأخطاء المؤقتة، مثل 503 Service Unavailable وانتهاء المهلة، طبّق تراجعًا أسيًا مع تحديد عدد المحاولات.
<?php
$maxRetries = 3;
for ($attempt = 0; $attempt < $maxRetries; $attempt++) {
try {
$data = httpGet($url, $token);
break;
} catch (RuntimeException $e) {
if ($attempt === $maxRetries - 1) throw $e;
sleep(2 ** $attempt);
}
}رؤوس تحديد معدل الطلبات
تتضمن واجهات API كثيرة رؤوسًا لتحديد معدل الطلبات، مثل X-RateLimit-Remaining وX-RateLimit-Reset. اقرأ هذه الرؤوس لتجنب تجاوز الحدود.
<?php
curl_setopt($ch, CURLOPT_HEADER, true);
// Parse headers from the response stringتخزين الاستجابات مؤقتًا
خزّن استجابات API مؤقتًا لتجنب استدعاءات الشبكة المتكررة. خزّن الاستجابات في Redis أو APCu مع مدة صلاحية TTL تتوافق مع متطلبات حداثة البيانات.
تسجيل استدعاءات API
سجّل عنوان URL للطلب، وطريقته، ورمز الحالة، وزمن الاستجابة للمساعدة في تصحيح الأخطاء ومراقبة سلامة API في بيئة الإنتاج.
التعامل مع انتهاء المهلة كخطأ
يُعد انتهاء مهلة cURL (CURLE_OPERATION_TIMEDOUT) خطأً في النقل، وليس خطأً في HTTP. تعامل معه صراحةً.
أخطاء شهادات SSL
تعني حالات فشل التحقق من الشهادة (CURLE_SSL_CACERT) أن شهادة الخادم غير موثوقة. حدّث حزمة شهادات CA، ولا تعطّل التحقق مطلقًا.
الملخص
تحقّق دائمًا من errno الخاص بـ cURL أولًا، ثم من حالة HTTP. حلّل محتوى الأخطاء. غلّف المنطق في دوال قابلة لإعادة الاستخدام. طبّق إعادة المحاولة عند حدوث إخفاقات مؤقتة.
تحقّق سريع
ما الذي ينبغي التحقق منه أولًا: errno الخاص بـ cURL أم حالة HTTP؟
الأسئلة الشائعة
هل درس «التعامل مع استجابات API وأخطائها» مجاني؟
نعم — نص درس «التعامل مع استجابات API وأخطائها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «التعامل مع استجابات API وأخطائها»؟
تحققوا من رموز حالة HTTP وتعاملوا مع الأخطاء وحلّلوا حمولات API تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «التعامل مع استجابات API وأخطائها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ترميز JSON وفك ترميزه
- إجراء طلبات HTTP باستخدام cURL
- التعامل مع استجابات API وأخطائها
- إنشاء عميل API بسيط