Theo kịch bản dưới đây,
Giả sử ai đó đưa ra yêu cầu đến máy chủ của bạn với dữ liệu ở định dạng chính xác, nhưng đơn giản là dữ liệu "không tốt". Vì vậy, ví dụ, hãy tưởng tượng rằng ai đó đã đăng một giá trị Chuỗi lên điểm cuối API mong đợi giá trị Chuỗi; nhưng, giá trị của chuỗi chứa dữ liệu được liệt kê trong danh sách đen (ví dụ: ngăn mọi người sử dụng "mật khẩu" làm mật khẩu của họ). sau đó mã trạng thái có thể là 400 hoặc 422?
Cho đến bây giờ, tôi đã trả lại "400 Yêu cầu xấu", theo w3.org, có nghĩa là:
Máy chủ không thể hiểu được yêu cầu do cú pháp không đúng. Khách hàng KHÔNG NÊN lặp lại yêu cầu mà không sửa đổi.
Mô tả này không hoàn toàn phù hợp với hoàn cảnh; nhưng, nếu bạn đi theo danh sách mã trạng thái HTTP cốt lõi được xác định trong giao thức HTTP / 1.1, thì đó có lẽ là lựa chọn tốt nhất của bạn.
Tuy nhiên, gần đây, một người nào đó trong nhóm Dev của tôi đã chỉ ra [với tôi] rằng các API phổ biến đang bắt đầu sử dụng các tiện ích mở rộng HTTP để có được chi tiết hơn với báo cáo lỗi của chúng. Cụ thể, nhiều API, như Twitter và Recurly, đang sử dụng mã trạng thái "422 Thực thể không thể xử lý" như được định nghĩa trong tiện ích mở rộng HTTP cho WebDAV. Mã trạng thái HTTP 422 trạng thái:
Mã trạng thái 422 (Thực thể không thể xử lý) có nghĩa là máy chủ hiểu loại nội dung của thực thể yêu cầu (do đó mã trạng thái 415 (Loại phương tiện không được hỗ trợ) là không phù hợp) và cú pháp của thực thể yêu cầu là chính xác (do đó là 400 (Yêu cầu sai ) mã trạng thái không phù hợp) nhưng không thể xử lý các hướng dẫn có trong đó. Ví dụ, điều kiện lỗi này có thể xảy ra nếu một thân yêu cầu XML chứa các hướng dẫn XML được định dạng đúng (nghĩa là đúng về mặt cú pháp), nhưng sai về mặt ngữ nghĩa, về mặt ngữ nghĩa.
Quay trở lại ví dụ mật khẩu của chúng tôi từ phía trên, mã trạng thái 422 này cảm thấy phù hợp hơn nhiều. Máy chủ hiểu những gì bạn đang cố gắng làm; và nó hiểu dữ liệu mà bạn đang gửi; nó chỉ đơn giản là không để dữ liệu đó được xử lý.