Запрос GET к /orders/123 сформирован правильно, но такого заказа в базе нет. Приложение работает штатно. Какой код состояния следует вернуть?

Правильный код состояния — 404 Not Found.

Короткий ответ

Что ответить на собеседовании

Правильный код состояния — 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
    }
    // обработка найденного заказа
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее