وضعیت کد 422 در HTTP

http status 422 unprocessable entity
20 آبان 1403

وقتی که ما با وب سروکار داریم، گاهی ممکن است با خطاهایی مواجه شویم که دلیل آن‌ها نامفهوم است. یکی از این خطاها، وضعیت HTTP 422 است. این خطا به معنای "موجودیت غیرقابل پردازش" است. ولی معنای دقیق آن چیست؟ به زبان ساده، وقتی که سرور نتواند درخواست کلاینت را متوجه یا پردازش کند، این خطا رخ می‌دهد.

خطای 422 معمولاً زمانی رخ می‌دهد که داده‌هایی که از سمت کلاینت به سرور ارسال می‌شوند، معتبر به نظر نمی‌رسند. برخلاف خطای 400 که بیشتر به معنای خطای سینتکس و فرم نادرست داده‌هاست، در 422 سرور می‌تواند درخواست را بخواند ولی در پردازش آن به مشکل برمی‌خورد.

دلیل اصلی وقوع این خطاها معمولاً انطباق‌ناپذیری داده‌های ارسال شده کلاینت با فرمت یا قوانین مورد انتظار در سرور است. مثلاً اگر بخواهید یک کاربر جدید را ثبت کنید و فیلدی مانند "ایمیل" معتبر نباشد، سرور ممکن است خطای 422 را بازگرداند.

حال، چطور باید با این خطاها مقابله کنیم؟ اول اینکه همواره باید داده‌های ارسالی به سرور را بررسی و اعتبارسنجی کنید. از ابزارهای مرورگر مثل DevTools برای بررسی درخواست‌ها استفاده کنید تا بتوانید خطاها را بهتر ردیابی کنید.

همچنین، در سمت سرور باید از داشتن پیام‌های خطای واضح و جامع اطمینان حاصل کرد تا توسعه‌دهندگان بتوانند به سادگی مشکل را شناسایی و رفع کنند.

مثال عملی با کد


<html>
<head>
    <title>تست خطای 422</title>
</head>
<body>
    <form id="testForm" method="POST" action="/submit">
        <input type="text" name="email" placeholder="ایمیل خود را وارد کنید" required />
        <button type="submit">ارسال</button>
    </form>
</body>
</html>

توضیح کد خط به خط

<html> و </html>: شروع و پایان سند HTML را مشخص می‌کند.
<head> و </head>: حاوی متا اطلاعات و عنوان صفحه است.
<title>: عنوان صفحه که در نوار مرورگر نمایش داده می‌شود. اینجا: "تست خطای 422"
<body> و </body>: محتویات اصلی صفحه وب را در بر می‌گیرد.
<form>: فرم HTML که برای ارسال داده به سرور استفاده می‌شود.
method="POST": نوع ارسال داده به سرور را مشخص می‌کند.
action="/submit": URLی که داده به آن ارسال می‌شود.
<input>: حاوی فیلدی برای ورود ایمیل کاربر است.
placeholder="ایمیل خود را وارد کنید": راهنمایی مختصر برای کاربر درباره داده‌ای که باید وارد شود.
required: اطمینان می‌دهد که کاربر نمی‌تواند فرم را بدون پر کردن این فیلد ارسال کند.
<button>: دکمه‌ای برای ارسال فرم به سرور.

سوالات متداول

؟

چرا خطای 422 رخ می‌دهد؟

؟

چگونه از بروز خطای 422 جلوگیری کنیم؟

؟

تفاوت خطای 422 با 400 چیست؟