Ребят, я час назад сидел с такими же ответами как

вы мне щас кидаете 🙂 Вот честно. Но потом я подумал… а на сколько я мыслю здраво, а не стереотипами.

1. Зачем HTTP коды вообще?
Они должны помогать клиенту понимать что вернул сервер. Это понятно.

2. Зачем клиент ходит на наши апи?
Для получения целевых ресурсов (объектов). Это может быть: продукт, комментарий, юзер и прочее.

3. Является ли пустая коллекция ресурсом для клиента?
Нет. Ему от нее ни холодно ни жарко. Все равно, когда API клиент узнает что в коллекции пусто, ему придется городить человекопонятное сообщение живому клиенту сидящему перед экраном ПК.

4. Код 404 при пустой коллеции поможет быстрее понять API клиенту что дело дрянь?
Определенно. Чем быстрее API клиент поймет, что в теле ответа от сервера нет желаемого тем лучше. Например можно не парсить json и не смотреть в тело ответа вовсе если там ничего для нас интересного нет. Это экономит серверные ресурсы и ускоряет обработку ответов. Каждый клиент сам для себя решит.

Но на всякий случай решил уточнить у других где я провтыкал с выводами.

И опять же, ничего не мешает вообще не использовать коды ответов и строить логику обработки сугубо на содержимом теле ответа. Это уже каждый разработчик для себя решает 🙂

Всем пасибо за участие.

4 ответов

8 просмотров

1. Если мы говорим конкретно о 4хх ошибках, а именно client errors, читай https://tools.ietf.org/html/rfc7231#section-6.5 2,3 Чем клиент-браузер отличается от клиента-андроид приложения? Ничем, они все ходят для того, чтобы получить данные. Если к примеру, у тебя есть страничка со всеми комментариями о продукте а-ля яндекс маркет, то тогда клиент-браузер должен показывать 404 ошибку, если следовать твой логике 4. Да, поможет если их использовать по стандарту а не лепить что попало. Опять же, читай https://tools.ietf.org/html/rfc7231#section-6.5

Можно последний вопрос. Когда ты на сайте делаешь поиск по словам и сервер ничего не находит ты ожидаешь увидеть страницу 404 или 200 с текстом "извините, ничего не найдено"?

далее все мое оценочное суждение: п3 - пустая коллекция это валидный ответ. является ресурсом. то что клиент получит пустой набор данных вполне себе нормальное явление, как он этот случай обработает - его проблемы, а не сервера. п4 - 404 нужен для отсутствующих ресурсов. пустая коллекция - не есть отсутствующий ресурс. ресурс присутствует но пока в нем нет элементов (а вот ответ в виде "[]" - есть, а это даже не 204) обратился ты в /post/1/comments - даже если комментов нет - это 200 и "[]". обратился в /post/100500/comments - нет поста 100500, тут тебе 404. кто то скажет "а что такое 204 тогда" - это в прямом смысле и есть "сервер вернул пустой body", хотя заголовки есть, и ресурс есть, просто кто то решил что не стоит вообще ничего возвращать.

1. в продолжение твоей мысли - главное не завязывать на них логику приложения. 2xx, 4xx, 5xx, а дальше свои коды внутрь пхай. 2. не только получения, он еще и поменять чего может. Короч RPC. 3. является. 4. нет.

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта