Ответ
Если запрос выполнен корректно, но данных нет, сервер вернет 200 OK, потому что:
- 404 Not Found означает, что сам ресурс (например, URL) не существует, а не что данные отсутствуют.
- Пустая выборка (
[]или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: [] // Результат работы — нихуя. Но это валидный результат!
}
Вот и вся философия, блядь. Не усложняй, а то доверия ебать ноль будет к твоему АПИ.