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

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

Спроектируйте панель фильтров, которая раскрывает предположения

Пусть фильтры LocalLLaMA объясняют границы: видимые условия, обратимые изменения, понятное состояние запроса и честные ограничения полученного материала.

Подпишите каждый активный фильтр

Панель фильтров описывает материал, который запросу разрешено вернуть. В предлагаемом журнале о квантовании покажите q=quantization, subreddit=LocalLLaMA, limit=3 и page=1 как отдельные решения. Ограничение сообщества не гарантирует, что все нужные обсуждения находятся там или что архив содержит каждое из них. Рядом поместите вопрос: например, при каких условиях измеряли память? Это помогает отличать выбранную границу от необъяснённого отсутствия материала в ответе.

Используйте подписи, соответствующие контракту. Несколько проанализированных терминов q требуют совпадения внутри подходящего title или text, а не одновременно в обоих полях и не суммы частичных совпадений между ними. kind=comment ограничивает тип записи, но не обещает полные ветки комментариев. min_score=10 задаёт порог сохранённой оценки, а не подтверждает авторитетность или полезность оставшихся записей. Видимо отличайте отсутствующие фильтры от активных ограничений. Значение по умолчанию, незаметно сужающее запрос, — тоже решение, которое читателю нужно понимать.

Покажите ограничение, которое можно снять

Разрешите убрать одно условие, не пересобирая запрос целиком. Понятная команда «Убрать минимальную оценку» может оставить запрос, сообщество и другие фильтры неизменными. Покажите изменение до отправки и начните новую последовательность со страницы 1. Так можно сравнить два заявленных запроса. Это не гарантирует приток записей и не показывает точное число исключённых: оба ответа ограничены, общие числа могут быть нижними границами, а повторное получение не обещает стабильный снимок.

Не приписывайте этому элементу историю о качестве. Удалить min_score — не значит пригласить спам; добавить — не значит выбрать экспертные свидетельства. Спросите, что порог даёт конкретному исследованию. Если он лишь скрывает непривычные взгляды, не помогая ответить на вопрос, его можно оставить выключенным. Делайте отправку явной, а не вызывайте получение при каждом изменении. Каждый успешный запрос стоит один кредит, включая пустой ответ, поэтому исследовательские элементы не должны незаметно превращаться в поток платных запросов.

Сохраняйте состояние URL понятным

URL с активными фильтрами служит записью предположений, сделанных при поиске. Пример запроса: https://api.redditsearchapi.com/v1/search?q=quantization&subreddit=LocalLLaMA&limit=3&page=1. Приложение может показать равнозначную сводку параметров и сохранить её в журнале. Корректно кодируйте значения при построении URL, оставляя подписи в интерфейсе читаемыми. Сохранённый запрос воспроизводит выбранные условия, но не сохраняет прежний ответ и не гарантирует последующую доступность тех же записей.

Не помещайте секрет в URL или общие снимки экрана. Backend приложения добавляет X-API-Key или Authorization: Bearer из своего хранилища секретов. Значения запроса и пометки тоже могут быть чувствительными, поэтому проверяйте их перед передачей другим. Элементы дат должны записывать from и to в формате YYYY-MM-DD UTC; to включает весь день. Изменение периода или размера страницы начинает новое сравнение, а не продолжает прежний номер страницы с уже другим смыслом границ.

Объясните получившийся охват

После ответа отличайте показанное от того, что устанавливают метаданные. Отобразите реально выведенное число записей и уточняйте pagination.total через pagination.relation. Для gte используйте «не менее», а не знак приблизительности; для unknown или null — «общее число неизвестно». pagination.has_more управляет продолжением внутри доступного окна, а pagination.window_exhausted отмечает его последнюю границу. Допускаются максимум 100 записей и 100 страниц. Ни граница, ни точное число в ответе не доказывают полный охват сообщества или темы читателя.

Укажите, что записи приходят в архивном порядке _doc, а не по времени, релевантности или оценке. Локальная перестановка затрагивает только уже загруженный материал. Объясните плоскую структуру и возможное отсутствие заголовка, автора, даты и ссылки. Необязательные parent_id или link_id помогают локально группировать доступные записи, но не являются фильтрами и не доказывают полноту разговора. Готовая панель должна позволять назвать ограничения и неопределённости, а не принимать точную на вид форму за полное или репрезентативное представление Reddit.