Reddit Search APIСначала вопросы, затем выводы.

Библиотека чтения

Разведите пустой результат и сбой передачи по разным экранам

Отличайте успешный пустой поиск о квантовании от HTTP-ошибок и потерянного ответа, сохраняя вопрос и оставляя повтор осознанным действием.

Определите классы ответов

Пустая область результатов не объясняет, что произошло. В предлагаемом журнале LocalLLaMA различайте выполняющийся запрос, успешный ответ с записями, успешный ответ с пустым data, HTTP-ошибку и попытку передачи без пригодного ответа. Это разные наблюдения. В частности, пустой успех не доказывает отсутствие подходящего обсуждения в архиве, а потерянный ответ не показывает, завершил ли сервер запрос. Не скрывайте эти различия за визуальным сокращением «нет результатов».

Используйте HTTP-статус вместе с проверенной формой ответа. Ответ 200 с data: [] — успешное пустое получение. HTTP 400, 401, 402, 429 и 502 — ошибки, а не разновидности успешных пустых данных. У сетевого исключения HTTP-статуса может не быть. По одной ошибке не выводите, прошёл ли запрос все стадии backend. Сохраняйте отправленные параметры и идентификатор запроса приложения с каждым исходом, чтобы поздний ответ можно было привязать к правильному поиску.

Опишите действия для пустого результата

Используйте сдержанную формулировку: «Для этого запроса записи не возвращены». Рядом покажите отправленные q=quantization и subreddit=LocalLLaMA, а также активные даты или порог оценки. Дайте намеренно изменить одно условие и отправить запрос заново. Не заменяйте пустой ответ вымышленными популярными обсуждениями и не расширяйте запрос автоматически под прежней подписью. После снятия фильтра новый результат относится к изменённому запросу и должен начинать последовательность со страницы 1.

Объясните уместное ограничение, не выдавая его за диагноз. В quantization memory все проанализированные термины должны совпасть внутри подходящего title или text; разделения между полями недостаточно. Это возможное соображение, а не доказательство причины пустого ответа. Сохраните различие оплаты: успешное пустое получение всё равно стоит один кредит. У пустой глубокой страницы также может быть неизвестное общее число. Не превращайте это в утверждение о нуле совпадений во всём архиве или повод бесконечно запрашивать страницы.

Опишите действия при ошибке

Адресуйте ошибку тому, кто может её устранить. При HTTP 400 проверяют реальные параметры, например неподдерживаемый фильтр или дату не в формате YYYY-MM-DD. HTTP 401 относится к служебному API-ключу, а 402 — к доступным кредитам аккаунта сервиса; ни один не устанавливает истечение личной сессии читателя в приложении. Оператору может потребоваться исправить ключ backend или проверить баланс. Не просите читателя вставлять служебный ключ в публичный экран поиска.

Для 429 соблюдайте Retry-After и уменьшайте повторные отправки. Для 502 сохраняйте запрос и предлагайте осознанный повтор, когда он уместен; возврат зарезервированного кредита может ожидать сверки. Отсутствующий ответ требует другого сообщения: исход неизвестен, в том числе была ли списана плата за успешный запрос. Недопустимые запросы, отклонённые до резерва, не оплачиваются, но сбой соединения не доказывает такое отклонение. Бесплатный /v1/status показывает статическое описание сервиса и HTTP-отклик; он не выясняет исход потерянного запроса и не проверяет поиск.

Проверьте непрерывность навигации

Непрерывность означает и сохранение пользовательского ввода. Запланируйте локальные fixtures для корректного пустого ответа, HTTP-ошибки и сетевого исключения до получения ответа. Используйте явно синтетический материал: это проверяет интерфейс, а не доступность архива. Убедитесь, что случаи дают разные сообщения и оставляют отправленный запрос доступным. Добавьте ситуацию, когда читатель меняет форму во время ожидания: прежний исход не должен выглядеть ответом на новую формулировку.

При сбое следующей страницы сохраняйте уже загруженные записи и отличайте их завершённое состояние от неудачного продолжения. Разрешите повторить ту же страницу или вернуться к форме без скрытого дополнительного запроса. Игнорирование позднего ответа интерфейсом не гарантирует отмену серверной работы. Запишите, какие переходы реально проверены приложением, а какие пока предложены. Цель — экран, который сообщает известное и предлагает полезное действие, а не успокаивает словами, не подтверждёнными ответом.