Правильный код состояния — 404 Not Found.
Запрос GET к /orders/123 сформирован правильно, но такого заказа в базе нет. Приложение работает штатно. Какой код состояния следует вернуть?
Правильный код состояния — 404 Not Found.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Запрос GET к /orders/123 сформирован правильно, но такого заказа в базе нет. Приложение работает штатно. Какой код состояния следует вернуть?
204 No Content
404 Not Found
410 Gone
403 Forbidden
Ответ
Правильный код состояния — 404 Not Found.
Объяснение:
- Запрос корректен, но ресурс (заказ с id 123) не найден в базе.
- 404 означает, что запрашиваемый ресурс отсутствует.
Другие варианты:
- 204 No Content — означает, что запрос успешен, но тело ответа пустое; не подходит, если ресурс не существует.
- 410 Gone — указывает, что ресурс был, но удалён навсегда; подходит, если известно, что заказ удалён.
- 403 Forbidden — означает, что доступ запрещён; не подходит, если просто нет такого заказа.
Пример на Go (использование net/http):
func getOrderHandler(w http.ResponseWriter, r *http.Request) {
orderID := "123" // пример
order, err := findOrderByID(orderID)
if err == ErrOrderNotFound {
http.NotFound(w, r)
return
}
// обработка найденного заказа
}