Какой код ответа / статуса я должен отправить на AJAX-запрос, когда возникает ошибка проверки пользователя / формы? - PullRequest
6 голосов
/ 15 июля 2011

Я создаю функцию моего веб-приложения, в которой пользователь может «редактировать на месте» запись и отправлять форму через AJAX с помощью jQuery.

Когда кто-то «редактирует ajax» запись и отправляет форму с действительными данными, я отправляю код состояния 200, который запускает функцию успеха JQuery AJAX, а затем игнорирует тело ответа (поскольку оно было успешным, я не не нужно), и свернуть форму.

При наличии ошибок проверки формы я отправляю код состояния 400, чтобы вызвать метод ошибки jQuery, и в теле запроса я указываю, какие поля не были проверены.

В предыдущем вопросе StackOverflow кто-то упомянул, что «странно», что я отправляю код состояния 400 и работаю с телом ответа. Разве мой подход не лучший метод? Что бы вы порекомендовали мне сделать в этой ситуации?

Ответы [ 3 ]

7 голосов
/ 15 июля 2011

Для меня коды состояния HTTP предназначены для сигнализации на уровне HTTP, а не на уровне приложений. Я бы сказал, что надлежащим ответом на некорректно предоставленные данные (если вы понимаете, что я имею в виду) является 200 с кодом ошибки уровня приложения. Я использую JSON для этого. Мои запросы всегда возвращают небольшое сообщение JSON, которое всегда имеет флаг, указывающий на успех / неудачу на уровне приложения. Мои упаковщики для вызовов ajax знают об этом и отправляют по мере необходимости.

4 голосов
/ 15 июля 2011

Использование полезной нагрузки кода состояния 4xx просто отлично.В спецификации HTTP ничего не сказано.

Если вы хотите что-то более конкретное, чем 400, взгляните на 422 Unprocessable Entity .

0 голосов
/ 15 июля 2011

Я бы вернул 200 со страницей ошибок (приложения) или исходной страницей с опцией ошибки, которая вызывает информационную панель с описанием ошибки.

Причина этого в том, что коды ошибок HTTP предназначены для ответа браузера на веб-сервер, а не для вашего веб-приложения.Держите логику приложения отдельно от того, что происходит, когда браузер и сервер общаются друг с другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...