Использование кодов состояния HTTP для отражения успеха / неудачи запроса веб-службы? - PullRequest
10 голосов
/ 23 марта 2010

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

С одной стороны, кажется, что коды состояния HTTP предназначены для HTTP: даже если возвращается ошибка приложения, сама передача HTTP прошла успешно, что предполагает ответ 200 OK .

С другой стороны, подход RESTful, по-видимому, предполагает, что если вызывающая сторона пытается отправить сообщение на ресурс, а параметры JSON запроса каким-то образом недопустимы, то 400 Bad Request необходимо.

Я использую Prototype на стороне клиента, который имеет удобный механизм автоматической отправки различных обратных вызовов на основе кода состояния HTTP ( onSuccess и onFailure ), поэтому я ' У меня возникает соблазн использовать коды состояния, чтобы указать на успех или неудачу обслуживания, но мне было бы интересно узнать, есть ли у кого-то мнение или опыт в этой области.

Спасибо!

Ответы [ 2 ]

12 голосов
/ 23 марта 2010

http код состояния только для указания статуса ответа приложения. и как вы сказали, если параметры json как-то недопустимы, код состояния будет подходящим ответом.

так что да, это действительно хорошая идея использовать код состояния http. de plus, тогда код статуса легко понять, поскольку он не меняется с приложения (веб-службы) на другое

3 голосов
/ 23 марта 2010

Вам определенно следует использовать правильные коды состояния, поскольку они предназначены именно для этой цели, а не для указания состояния самого HTTP-запроса. Таким образом, вы можете перенаправить ответ на соответствующую функцию / ветвь перед его синтаксическим анализом, что приведет к гораздо более аккуратному коду на стороне клиента.

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