Возврат успешных / неудачных ответов AJAX и кодов HTTP-статуса - PullRequest
1 голос
/ 18 июля 2010

Допустим, у меня есть сайт в стиле StackOverflow.Я хочу оставить комментарий под чьим-то ответом.Может произойти две вещи:

1) Комментарий успешно опубликован.Я возвращаю фактический отформатированный DIV как некоторый ответ JSON, устанавливаю JSON.

{
    "Success": true, 
    "Data": "some escaped html to inject"
}

2) Сообщение с комментарием не выполнено.Я возвращаю ошибку как ответ JSON.

{
    "Success": false, 
    "Data": "You can only post every 15 seconds"
}

Это правильный способ сделать что-то?Я замечаю, что StackOverflow возвращает коды Apache 500 Internal error, когда сообщение с комментарием неудачно, что я нахожу подозрительным.

Не является 500 Internal error зарезервированным для вещей, которые на самом деле неправильнысервер, а не только потому, что не удалось проверить некоторые комментарии?

Ответы [ 2 ]

2 голосов
/ 18 июля 2010

Я согласен, что использование 500 Internal error немного странно, но существует множество применимых кодов ответов, которые вы можете использовать для удовлетворения своих потребностей.

Здесь есть хороший список: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Пример:

Пользователь не вошел в систему, необходимо войти, чтобы комментировать.Отправить: 401 Unauthorized

Пользователь вошел в систему, пытаясь прокомментировать закрытую тему.Отправить 403 Forbidden или 400 Bad Request.

1 голос
/ 18 июля 2010

Я согласен, что 500 не идеально.Это должен быть статус 4xx, потому что это была проблема с клиентом.409 - это возможный выбор.Это не совсем подходит, но включает в себя «Этот код разрешен только в ситуациях, когда ожидается, что пользователь сможет разрешить конфликт и повторно отправить запрос»;они могут разрешить конфликт, ожидая.

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