2014-10-15 1 views
3

Моя команда и я кодируем API REST, но некоторые концепции до сих пор не полностью поняты.Какой HTTP-код для использования в REST API для подресурса, если родительский ресурс не существует?

В данном ресурсе: objective/{id}/goal, где цель является сбор

Если потребитель пытается достичь цели, которая не существует, то API возвращает код статуса 404, довольно просто.

например: objective/999 возвращает 404

По какой-то причине потребителя пытается извлечь цели из этого несуществующего ресурса:

экс: objective/999/goal возвращается ?

Какого наиболее подходящего код для возврата ? У меня такое чувство, что это тоже должно быть 404. Некоторые люди рассматривают другой код ошибки, потому что API должен каким-то образом сообщить, что родительский ресурс не существует в первую очередь.

ответ

6

Использование 404. Имейте в виду, что ответ 404 может содержать тело ответа. Таким образом, вы могли бы ответить что-то вроде следующего:

Request 
GET /objective/7/goal 

Response 
404 Not Found 
{ 
    "type": "ParentNotFound", 
    "description": "The parent resource was not found.", 
    "parent_uri": "/objective/7" 
} 

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

+0

Таким образом выполняются как код состояния, так и информация для потребителя. Отметьте как решение! –

Смежные вопросы