вы мне щас кидаете 🙂 Вот честно. Но потом я подумал… а на сколько я мыслю здраво, а не стереотипами.
1. Зачем HTTP коды вообще?
Они должны помогать клиенту понимать что вернул сервер. Это понятно.
2. Зачем клиент ходит на наши апи?
Для получения целевых ресурсов (объектов). Это может быть: продукт, комментарий, юзер и прочее.
3. Является ли пустая коллекция ресурсом для клиента?
Нет. Ему от нее ни холодно ни жарко. Все равно, когда API клиент узнает что в коллекции пусто, ему придется городить человекопонятное сообщение живому клиенту сидящему перед экраном ПК.
4. Код 404 при пустой коллеции поможет быстрее понять API клиенту что дело дрянь?
Определенно. Чем быстрее API клиент поймет, что в теле ответа от сервера нет желаемого тем лучше. Например можно не парсить json и не смотреть в тело ответа вовсе если там ничего для нас интересного нет. Это экономит серверные ресурсы и ускоряет обработку ответов. Каждый клиент сам для себя решит.
Но на всякий случай решил уточнить у других где я провтыкал с выводами.
И опять же, ничего не мешает вообще не использовать коды ответов и строить логику обработки сугубо на содержимом теле ответа. Это уже каждый разработчик для себя решает 🙂
Всем пасибо за участие.
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. нет.
Обсуждают сегодня