Почему при корректном запросе с пустой выборкой не вернется статус кода 404

Ответ

Если запрос выполнен корректно, но данных нет, сервер вернет 200 OK, потому что:

  1. 404 Not Found означает, что сам ресурс (например, URL) не существует, а не что данные отсутствуют.
  2. Пустая выборка ([] или null) — валидный ответ, подтверждающий успешное выполнение запроса.

Пример:

// GET /api/users?name=NonExistentName  
// Ответ:  
{
  status: 200,
  data: []
}

Использование 404 в таком случае вводит в заблуждение, так как эндпоинт существует, просто данных нет.

Ответ 18+ 🔞

А, слушай, вот это классика, блядь! Прямо в точку, ёпта!

Ну представь себе: ты пришёл в библиотеку, спрашиваешь: «Дайте мне, пожалуйста, книгу про летающих свиней в костюмах Чиполлино». Библиотекарша смотрит в каталог, потом на тебя, и говорит: «Извините, такой книги у нас нет».

Вопрос: она что, должна тебе крикнуть «ОШИБКА 404! БИБЛИОТЕКА НЕ НАЙДЕНА!» и вырубить свет? Да нет же, сука! Она же нашла сам раздел «Книги про летающих свиней»! Просто в нём нихуя нет! Пусто! Полка чистая!

Вот и тут так же. Ты пришёл по правильному адресу (/api/users), спросил чётко (?name=Василий). Сервер тебя услышал, залез в свою базу, порылся там, хуй побей, и говорит: «Братан, я всё проверил. Василиев ноль. Пустота. Но запрос-то я выполнил, всё окей».

И он возвращает тебе 200 OK и data: []. Это как библиотекарша, которая говорит: «Вот ваш запрос обработан, вот полка, вот она пустая. Всё в порядке, просто книг таких нет».

А 404 — это если бы ты пришёл и спросил книгу по адресу /api/хуйпоймичто, а библиотекарша тебе: «Мужик, ты охуел? У нас такого отдела вообще не существует! Иди нахуй! Вот тебе 404!».

Понимаешь разницу? 200 с пустым ответом — это «нашёл, но нихуя». 404 — это «даже искать не буду, потому что ты пришёл не туда, мудак».

Код, кстати, абсолютно верный:

// GET /api/users?name=NonExistentName
// Ответ:
{
  status: 200, // Всё гуд, работа сделана
  data: [] // Результат работы — нихуя. Но это валидный результат!
}

Вот и вся философия, блядь. Не усложняй, а то доверия ебать ноль будет к твоему АПИ.