404 Не найдено или плохой запрос?

Скажем, что у нас есть следующий вызов REST:

GET api/companies/5 

(получите компанию с идентификатором 5)

Если компания "5" не существует, мы обычно возвращаем ответ 404 Not Found.

Но теперь позвольте принять этот вызов:

GET api/companies/5/invoices/10 

(получите счет 10 от компании 5)

Теперь, если компания '5' не существует, мы все еще возвращаем 404 Not Found? Или должен быть возвращен 404, если внешний ресурс не может быть найден (счет-фактура 10 в этом случае).

Может ли быть Bad Request лучший вариант?

Ответы

Ответ 1

404 - ваш лучший ответ. Согласно HTTP RFC, http://www.ietf.org/rfc/rfc2616.txt, 400 Bad Request означает:

Запрос не мог быть понят сервером из-за неправильного синтаксиса.

В то время как 404 состояния:

Сервер не нашел ничего, соответствующего запросу-URI.

Весь URI - ваш идентификатор ресурса, и вы не найдете соответствующий ресурс для этого конкретного идентификатора.