422 Unprocessable Content: صياغة سليمة وبيانات غير صالحة

422 Unprocessable Content يعني أن الطلب سليم الصياغة لكن بياناته لا يمكن معالجتها، وعادةً لأنها تفشل في التحقق.

افحص رمز حالة رابط

422 Unprocessable Content يعني أن الخادم فهم الطلب وصيغته سليمة، لكن البيانات داخله لا معنى لها: حقل بريد إلكتروني بلا عنوان بريد، أو تاريخ انتهاء قبل تاريخ البداية، أو كمية قدرها −3. وهو الرد القياسي على أخطاء التحقق في واجهات API الحديثة.

التعريف

يقول RFC 9110، القسم 15.5.21 إن الخادم يفهم نوع المحتوى وإن الصياغة صحيحة، لكنه «عجز عن معالجة التعليمات الواردة فيه». بدأ الرمز في WebDAV (RFC 4918) تحت اسم «Unprocessable Entity»، وهو الاسم الذي ما زالت أطر كثيرة تستخدمه؛ ثم أعاد RFC 9110 تسميته وجعله جزءًا من HTTP الأساسي.

الحد الفاصل بين 400 و422: الرمز 400 للطلبات المعطوبة (JSON مشوه، صياغة غير صالحة)، و422 للطلبات سليمة الصياغة لكنها خاطئة دلاليًا. واستخدم 409 عندما تكون المشكلة تعارضًا مع الحالة الحالية للمورد.

أين ستصادفه

  • يعيد Laravel الرمز 422 مع كائن errors عندما يفشل التحقق في طلب JSON.
  • تعرض تطبيقات Ruby on Rails حالات فشل حفظ النماذج بحالة unprocessable.
  • يرد FastAPI بـ 422 عندما لا تطابق بيانات الطلب النموذج المعلن.
  • يعيد IndexNow الرمز 422 عندما لا تنتمي الروابط المرسلة إلى النطاق المضيف أو لا يطابق المفتاح.

التأثير على السيو

لا تأثير في الصفحات العادية: فالزواحف لا ترسل نماذج ولا حمولات API. والرابط العام الذي يعيد 422 لطلب GET معطوب، وستعدّه Google رمز 4xx وتُسقطه. وموضع تماس 422 مع السيو هو إرسال الروابط. فإذا رفض IndexNow دفعتك، فتأكد أن كل رابط على النطاق المضيف نفسه الذي فيه ملف المفتاح. وتتيح لك أداة إرسال IndexNow التحقق من ملف المفتاح قبل الإرسال.

كيف تصلحه

إن كنت العميل فاقرأ جسم الرد: يسمّي 422 الجيد كل حقل فشل وسبب فشله. وإن كنت مطوّر API فأعد أخطاءً مقروءة آليًا لكل حقل، كما يفعل Laravel افتراضيًا:

HTTP/1.1 422 Unprocessable Content
Content-Type: application/json

{
  "message": "The email field must be a valid email address.",
  "errors": {
    "email": ["The email field must be a valid email address."]
  }
}

وللتأكد من أن صفحاتك العامة غير متأثرة، مرّرها في أداة فحص حالة HTTP.

الأسئلة الشائعة

ما الفرق بين 400 و422؟

الرمز 400 يعني أن الطلب مشوه، كأن يكون JSON غير صالح. والرمز 422 يعني أن الطلب سليم الصياغة لكن القيم تفشل في التحقق أو في قواعد العمل.

لماذا يعيد IndexNow الرمز 422؟

يستخدم IndexNow الرمز 422 عندما لا تنتمي الروابط المرسلة إلى النطاق المضيف الذي أرسلت له، أو عندما لا يطابق المفتاح. أرسل روابط نطاق واحد في كل مرة، مع استضافة ملف المفتاح على النطاق نفسه.

هل «Unprocessable Entity» هو نفسه «Unprocessable Content»؟

نعم. كلاهما الحالة 422. أعاد RFC 9110 تسمية عبارة السبب الأصلية في WebDAV، وما زالت أطر كثيرة تستخدم الاسم القديم.