استجابة الخادم 422 Unprocessable Entity
تعريف واستخدام رمز الحالة 422
رمز الحالة HTTP 422 (كيان غير قابل للمعالجة) هو رمز يشير إلى أن الخادم فهم محتوى الطلب، ولكنه غير قادر على معالجته بسبب أخطاء دلالية. يحدث هذا عادةً عندما تكون البيانات المقدمة غير صحيحة أو غير مكتملة.
ما الذي يعنيه رمز الحالة 422؟
يعني رمز الحالة 422 أن الخادم قادر على معالجة الطلب، لكن هناك مشكلة في البيانات المقدمة. هذا يمكن أن يحدث في عدة سيناريوهات:
- شكل البيانات غير صحيح
- غياب الحقول الإلزامية
- قيم غير مدعومة في الحقول
أمثلة عملية لاستخدام رمز الحالة 422
مثال 1: خطأ في التحقق من صحة النموذج
عندما يرسل العميل بيانات النموذج، قد يتم إرجاع رد من الخادم برمز 422 إذا كانت البيانات غير صحيحة.
على سبيل المثال، إذا كان هناك حقل مطلوب لم يتم ملؤه، فإن الخادم سيستجيب كما يلي:
HTTP/1.1 422 Unprocessable Entity Content-Type: application/json { "errors": { "name": "حقل الاسم مطلوب." } }
مثال 2: معالجة بيانات API
عندما لا يتمكن الخادم من معالجة البيانات الواردة، قد يتم إرجاع رمز 422. على سبيل المثال، إذا تم إرسال بيانات غير متوافقة مع المعايير المطلوبة، فسيكون الرد كما يلي:
HTTP/1.1 422 Unprocessable Entity Content-Type: application/json { "errors": { "age": "يجب أن تكون قيمة العمر أكبر من 18." } }
مثال 3: العمل مع الملفات
قد يحدث رمز 422 عند محاولة تحميل ملف بتنسيق غير مدعوم. على سبيل المثال:
HTTP/1.1 422 Unprocessable Entity Content-Type: application/json { "errors": { "file": "تنسيق الملف غير مدعوم. يرجى تحميل ملف من نوع JPEG أو PNG." } }
تصحيح الأخطاء التي تسبب رمز الحالة 422
تصحيح على لغة JavaScript
إذا كان لديك نموذج يقوم بإرسال بيانات غير صحيحة، يمكنك تحسين الكود كما يلي:
function validateForm(data) { if (!data.name) { throw new Error("اسم الحقل مطلوب."); } // مزيد من التحقق من صحة البيانات }
تصحيح على لغة Python
في بايثون، يمكنك استخدام مكتبات مثل Marshmallow للتحقق من صحة البيانات:
from marshmallow import Schema, fields, ValidationError class UserSchema(Schema): name = fields.Str(required=True) age = fields.Int(required=True) data = {} # بيانات غير صحيحة schema = UserSchema() try: schema.load(data) except ValidationError as err: print(err.messages)
تصحيح على لغة PHP
عند استدعاء API ببيانات خاطئة، يمكنك ضبط الخادم للتأكد من أنه يتحقق من البيانات بشكل صحيح:
$data = $_POST; // بيانات مستلمة if (empty($data['name'])) { http_response_code(422); echo json_encode(['error' => 'حقل الاسم مطلوب.']); }
توصيات لمنع حدوث رمز الحالة 422
- التحقق من صحة البيانات على جانب العميل.
- توثيق متطلبات API بوضوح.
- تسجيل الأخطاء لتبسيط عملية التشخيص.
مقارنة الأخطاء الشائعة التي تؤدي إلى رمز 422
سبب الخطأ | الوصف | كيفية المعالجة |
---|---|---|
شكل البيانات غير صحيح | عندما تكون البيانات المقدمة غير متوافقة مع المعايير المطلوبة. | تحقق من صحة البيانات قبل الإرسال. |
غياب الحقول الإلزامية | عندما يفتقر النموذج إلى الحقول المطلوبة. | تأكد من تعبئة جميع الحقول المطلوبة. |
قيم غير مدعومة في الحقول | عندما يتم إدخال قيم غير صحيحة. | التحقق من صلاحية القيم المدخلة. |