بررسی ارور 422 Unprocessable Entity
ارور 422 با عنوان Unprocessable Entity که به معنای (موجودیت غیر قابل پردازش) می باشد یکی از خطاهای سمت کلاینت است. این کد وضعیت، زمانی رخ می دهد که یک درخواست (request) دارای ساختار درست است (well-formed) اما به دلیل خطاهای معنایی (semantic errors) قابل پردازش نیست.
کد ارور 422 به طور خاص برای افزونه های http در WebDAV طراحی شده است.
WebDAV = Web Distributed Authoring and Versioning
گاها مشاهده می شود که توسعه دهندگان، از ارورهای 400 و 422 به جای هم استفاده می کنند و بحث هایی نیز در این زمینه وجود دارد، با این حال در بیشتر موارد توافق بر این موضوع وجود دارد که کد وضعیت 422 تنها در صورتی نشان داده شود که از قابلیتهای WebDAV پشتیبانی شده باشد.
مقایسه کدهای وضعیت 400 و 422
ارورهای bad request از کد وضعیت 400 استفاده می کنند و اگر درخواست کاربر شامل syntax های ناهنجار (malformed) و یا مسیریابی درخواست گمراه کننده (deceptive) باشند بهتر است این کد وضعیت بازگردانده شود.
ممکن است این کد وضعیت شبیه به 422 Unprocessable Entity به نظر برسد اما در عمل از یکدیگر متمایز هستند، به این صورت که در خطای 422 ، syntax های موجود در درخواست، صحیح هستند در حالی که syntax های درخواست هایی که ارور 400 را ایجاد می کنند نادرست هستند.
در نتیجه استفاده از کد وضعیت 422 باید تنها در موارد خاصی انجام شود. در اکثر موارد دیگر که ارور ایجاد شده برای کلاینت بر اثر syntax های malformed رخ داده است، بهتر است تا از کد وضعیت 400 bad Request استفاده شود.
علت ایجاد ارور 422 Unprocessable Entity
این خطا زمانی رخ می دهد که داده ها درست نباشند یا به دلیل عدم وجود اصطلاحات بهتر، منطقی نباشند (logical sense) و همچنین مسیر ایجاد این ارور بر اساس هر سناریو می تواند متفاوت باشد.
باید داده ها را بررسی کرد و به دنبال تعریف های نادرست از یک قطعه خاص در درخواست گشت.
کد وضعیت 422 خیلی رایج نیست. در بیشتر موارد از کد 400 به عنوان جایگزینی برای آن یاد می شود. اگر یک مورد خاص دارید که در آن از WebDAV استفاده می کنید و برای یک درخواست نیاز به بازگرداندن کد وضعیتی دارید که از نظر نحوی (syntactically) صحیح است ولی از نظر معنایی (semantically) نادرست است میتوانید در آن شرایط از کد وضعیت 422 استفاده کنید.
امیدواریم این آموزش مورد توجه شما قرار گرفته باشد.