Если веб-службе Restful не удается обновить или создать ресурс с помощью методов PUT или POST соответственно. Какой должен быть код ответа?

Если веб-службе Restful не удается обновить или создать ресурс с помощью методов PUT или POST соответственно, каким должен быть код ответа?

Должен ли код ответа при сбое методов PUT и POST находиться в диапазоне 200 или 500. И какой должен быть точный код и возможное ответное сообщение.

Редактировать: расширение вопроса также до GET и DELETE
Аналогичным образом, каким должен быть код ошибки для неудачных запросов GET и DELETE.
Пример: GET /profiles/lincoln – относится к существующему профилю – поэтому возвращается 200 код ответа (поправьте меня, если не так).
но GET /profiles/mccain - относится к несуществующим профилям - так какой должен быть код ответа

И аналогично для удаления -
Пример: DELETE /movies/starwars - ссылается на существующий фильм, поэтому удаление прошло успешно (не уверен, какой код ответа об успешном завершении должен быть для удаления - прокомментируйте, пожалуйста)
но: DELETE /movies/planetofhumans - относится к несуществующему фильму. так какой должен быть код ответа.


person samshers    schedule 27.08.2017    source источник
comment
Обычно я использую стандарты, представленные в приведенной ниже ссылке Google: developers.google.com /drive/v3/web/handle-errors   -  person Amit K Bist    schedule 28.08.2017


Ответы (1)


Не усложняйте.

Семантика описана в RFC 7231.

  • если запрос содержит неправильный синтаксис или не может быть выполнен: вернуть статус из класса 4xx (Client Error)
  • если серверу не удалось выполнить явно допустимый запрос: вернуть статус из класса 5xx (ошибка сервера)

Фактический метод, указанный в запросе, не имеет значения: все они используют одну и ту же семантику для каждого из кодов состояния.

За исключением ответа на запрос HEAD, сервер ДОЛЖЕН отправить представление, содержащее объяснение ситуации с ошибкой, а также то, является ли это временным или постоянным состоянием.

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

GET /profiles/mccain - относится к несуществующим профилям - так какой должен быть код ответа

404 NOT FOUND

Код состояния 404 (не найдено) указывает на то, что исходный сервер не нашел текущего представления для целевого ресурса или не желает раскрывать его существование.

person VoiceOfUnreason    schedule 27.08.2017
comment
-so DELETE /movies/planetofhumans - который относится к несуществующему фильму, также возвращает 404. Верно? - person samshers; 27.08.2017