Сопоставление исключений с кодами состояния HTTP в веб-службах REST - PullRequest
5 голосов
/ 20 ноября 2008

При создании веб-сервисов REST в .NET, какой самый "RESTful" способ отображения System.ArgumentNullException и System.ArgumentException в коды состояния HTTP? Моим первым предположением было бы использовать HTTP 400 / Bad Request с соответствующим описанием.

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

Ответы [ 2 ]

10 голосов
/ 21 ноября 2008

Как правило, коды состояния 4xx сообщают клиенту, что запрос не выполнен, но может быть успешным, если запрос смоделирован. Коды 5хх информируют клиента о проблемах, на которые клиент не имеет влияния.

Итак, первое различие, которое вы должны сделать, - это коды 4xx и 5xx, то есть сообщить клиенту, следует ли повторить попытку.

HTTP 400 «Неверный запрос» следует использовать, если запрос действительно синтаксически искажен, неполон, противоречит или иным образом в корне неверен. Кроме того, это может быть действительный статус по умолчанию в диапазоне 4xx, если никакое другое состояние не представляется подходящим, и вы считаете, что клиенту нужно только изменить запрос для успешного выполнения.

1 голос
/ 20 ноября 2008

Это зависит от контекста. Например. ArgumentNullException может быть вызвано нарушением предварительного условия или внутренней ошибкой сервера.

С уважением, Тамберг

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