Каков правильный статус HTTP для исключений? - PullRequest
0 голосов
/ 19 января 2012

Какой статус HTTP я должен вернуть, если мой скрипт выдает исключение?

200 OK

или

500 Внутренняя ошибка сервера

Допустим, пользовательпараметры запроса верны, но в моем скрипте есть ошибка, из-за которой вместо правильного ответа появляется сообщение об ошибке (XML, JSON или другой формат).Каким должен быть статус HTTP?

Ответы [ 3 ]

9 голосов
/ 19 января 2012

500 Internal Server Error - правильный статус, если ошибка не может быть исправлена ​​клиентом, изменившим свой запрос.

Используйте любой из 4XX статусов, если клиент мог бы исправить свой запрос, чтобы избежать ошибки (или 404, если ресурс не был найден).

200 OK - это , а не соответствующий статус практически в любой ситуации с ошибкой, потому что тогда клиент думает, что все работает нормально (а это не так) и может продолжать делать те же самые вызывающие ошибки запросы.

Ознакомьтесь с доступными кодами состояния в RFC2616 и найдите тот, который наиболее соответствует ситуации.

3 голосов
/ 19 января 2012

Зависит от того, почему выдается исключение, поскольку они могут использоваться практически для любой ошибки. Если он будет сгенерирован, потому что какой-то идентификатор в URI не найден в базе данных, я бы сказал 404. С другой стороны, если это происходит из-за того, что база данных не работает, я бы выбросил 500. Если возникнет исключение, но полученная страница все равно будет полезно для пользователя я бы сказал вернуть 200.

0 голосов
/ 19 января 2012

Просмотрите определения кода состояния . 500 или 400 следует делать для общих вопросов, однако, чем более подробным вы будете, тем более полезным будет возвращаемый статус.

...