المحتويات

    استجابة الخادم 422 Unprocessable Entity

    تعريف واستخدام رمز الحالة 422

    رمز الحالة HTTP 422 (كيان غير قابل للمعالجة) هو رمز يشير إلى أن الخادم فهم محتوى الطلب، ولكنه غير قادر على معالجته بسبب أخطاء دلالية. يحدث هذا عادةً عندما تكون البيانات المقدمة غير صحيحة أو غير مكتملة.

    422 - Unprocessable Entity

    ما الذي يعنيه رمز الحالة 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

    سبب الخطأ الوصف كيفية المعالجة
    شكل البيانات غير صحيح عندما تكون البيانات المقدمة غير متوافقة مع المعايير المطلوبة. تحقق من صحة البيانات قبل الإرسال.
    غياب الحقول الإلزامية عندما يفتقر النموذج إلى الحقول المطلوبة. تأكد من تعبئة جميع الحقول المطلوبة.
    قيم غير مدعومة في الحقول عندما يتم إدخال قيم غير صحيحة. التحقق من صلاحية القيم المدخلة.