رموز الأخطاء
فهم استجابات أخطاء API وكيفية معالجتها.
نظرة عامة
يُرجع API استجابات أخطاء موحدة مع رموز أخطاء محددة لمساعدتك في تحديد المشكلات وحلها بسرعة.
تنسيق استجابة الخطأ
تتبع جميع استجابات الأخطاء هذا الهيكل:
{
"status": "error",
"error": {
"code": "AUTH_1001",
"message": "بيانات اعتماد المصادقة مفقودة",
"details": "حقول 'username' و 'password' مطلوبة كلاهما",
"timestamp": "2025-12-22T10:30:00Z"
}
}
| الحقل | النوع | الوصف |
|---|---|---|
status | string | دائمًا "error" لاستجابات الأخطاء |
error.code | string | معرف فريد للخطأ |
error.message | string | رسالة خطأ قابلة للقراءة |
error.details | string | سياق إضافي (اختياري) |
error.timestamp | string | طابع زمني ISO 8601 |
أخطاء المصادقة (1000-1099)
أخطاء متعلقة ببيانات الاعتماد والمصادقة.
| الرمز | HTTP | الرسالة | الحل |
|---|---|---|---|
AUTH_1001 |
401 | بيانات اعتماد المصادقة مفقودة | قم بتضمين اسم المستخدم وكلمة المرور في الطلب |
AUTH_1002 |
401 | اسم المستخدم أو كلمة المرور غير صالحة | تحقق من صحة بيانات الاعتماد |
AUTH_1003 |
403 | الحساب مقفل مؤقتًا | انتظر قبل إعادة المحاولة أو اتصل بالدعم |
أخطاء الحصة (1100-1199)
أخطاء متعلقة بحصة API وحدود الاستخدام.
| الرمز | HTTP | الرسالة | الحل |
|---|---|---|---|
QUOTA_1101 |
403 | حصة API غير كافية | اشترِ المزيد من الرصيد أو تحقق من الحصة |
QUOTA_1102 |
429 | تجاوز حصة API | انتظر تجديد الحصة أو قم بترقية خطتك |
أخطاء التحقق (2000-2099)
أخطاء متعلقة بالتحقق من الطلب وبيانات الإدخال.
| الرمز | HTTP | الرسالة | الحل |
|---|---|---|---|
VAL_2001 |
400 | لم يتم رفع ملف | قم بتضمين ملف في الطلب |
VAL_2002 |
400 | تنسيق ملف غير صالح | استخدم التنسيقات المدعومة: PDF، PNG، JPG، WEBP |
VAL_2003 |
400 | ملفات PDF متعددة غير مسموح بها | قم برفع ملف PDF واحد أو صور متعددة |
VAL_2004 |
400 | لا يمكن خلط PDF والصور | قم برفع PDF أو صور، وليس كليهما |
VAL_2005 |
400 | رمز لغة غير مدعوم | استخدم رمز لغة مدعوم |
أخطاء المعالجة (3000-3099)
أخطاء أثناء معالجة المستند وتحليل الذكاء الاصطناعي.
| الرمز | HTTP | الرسالة | الحل |
|---|---|---|---|
PROC_3001 |
500 | فشلت معالجة المستند | تحقق من جودة الصورة، أعد محاولة الطلب |
PROC_3002 |
500 | فشل استخراج البيانات الوصفية | تأكد من أن المستند يحتوي على نص قابل للقراءة |
PROC_3003 |
500 | فشل استخراج المعايير | تحقق من أن تنسيق تحليل الدم قابل للتعرف عليه |
PROC_3004 |
500 | فشل إنشاء التفسير | أعد محاولة الطلب |
PROC_3006 |
504 | انتهت مهلة المعالجة | قلل حجم الملف أو قسّمه إلى طلبات متعددة |
أخطاء الخادم (5000-5099)
أخطاء خادم داخلية ومشاكل توفر الخدمة.
| الرمز | HTTP | الرسالة | الحل |
|---|---|---|---|
SRV_5001 |
500 | خطأ داخلي في الخادم | أعد محاولة الطلب، اتصل بالدعم إذا استمرت المشكلة |
SRV_5002 |
503 | الخدمة غير متوفرة مؤقتًا | انتظر وأعد المحاولة مع backoff أسي |
أفضل ممارسات معالجة الأخطاء
التوصيات
- تحقق دائمًا من حقل
status- الاستجابات الناجحة لديها"status": "success" - نفّذ منطق إعادة المحاولة للأخطاء المؤقتة (5xx) مع backoff أسي
- سجل رموز الأخطاء لتصحيح الأخطاء والمراقبة
- اعرض رسائل سهلة الاستخدام بناءً على رموز الأخطاء
- استخدم نقاط نهاية sandbox لاختبار معالجة الأخطاء
مثال معالجة الأخطاء (JavaScript)
async function analyzeBloodTest(file) {
try {
const response = await fetch(API_URL, {
method: 'POST',
body: formData
});
const data = await response.json();
if (data.status === 'error') {
const errorCode = data.error.code;
switch (true) {
case errorCode.startsWith('AUTH_'):
throw new Error('فشلت المصادقة. تحقق من بيانات اعتمادك.');
case errorCode.startsWith('QUOTA_'):
throw new Error('تم تجاوز الحصة. يرجى ترقية خطتك.');
case errorCode.startsWith('VAL_'):
throw new Error('طلب غير صالح: ' + data.error.message);
case errorCode.startsWith('PROC_'):
// أعد المحاولة لأخطاء المعالجة
return retryRequest(file);
default:
throw new Error('حدث خطأ. يرجى المحاولة مرة أخرى.');
}
}
return data.data;
} catch (error) {
console.error('خطأ API:', error);
throw error;
}
}