2016-01-30 4 views
0

Я вызываю какую-то операцию через вызов REST, например. сырец пароль против сохраненного матча хэша:Операции REST и коды состояния

POST /v1/user/:id/password/verification HTTP/1.1 

{"password": "correct staple battery horse"} 

Вопрос заключается в том, должен я использую коды состояния для явного указания результата операции? С одной стороны, REST означает работу с ресурсами, поэтому я создаю ресурс «операция проверки пароля», которая может быть неудачной. С другой стороны, этот ресурс был создан в любом случае - это просто операция, которая потерпела неудачу, и нет абсолютно правильного кода состояния для отказа операции маркировки - 404 означает, что вообще не было никакой операции (это ложь) или что пароль не существует (и «предоставленный пароль не соответствует сохраненному хешу» с «сохраненным хешем не существует» - это совершенно разные результаты), 403 также неверно, потому что для этой операции фактически был предоставлен доступ.

Итак, следует ли использовать коды состояния для операций с двоичным выходом (true/false), или я должен просто придерживаться результата передачи возвращаемой полезной нагрузки?

ответ

1

Если вы идете по книге - вы должны найти подходящий код состояния для своей работы. В вашем случае я бы предположил, что это будет что-то в области 50*, которая указывает на ошибку, но не обязательно, что ресурс не был создан.

Это, если вы идете по книге. De-facto, я использовал множество API REST, которые не входят в книгу и просто возвращают их собственные статусы. Например, нет ничего необычного, чтобы вернуть код состояния 200 OK, потому что обратная связь HTTP-запроса-ответа работала корректно, но все же получает прикладной код ошибки в полезной нагрузке. Не уверен, что это путь, который я бы выбрал, но, как я уже сказал, это не так уж редко. Даже API facebook работает так (или работал так, как 4-5 лет назад, когда я в последний раз его использовал).