Сначала решите, что увидит читатель
Для первого предпросмотра достаточно небольшой задачи: показать доступные фрагменты комментариев и понятно объяснить, если показывать нечего. Reddit Fetch предоставляет JavaScript-приложениям доступ к независимому историческому архиву Reddit. Выберите одну тему и заранее продумайте подпись для отсутствующего текста. Так проверка источника будет связана с конкретным экраном вашего приложения, а не со сбором данных ради самого сбора.
Пример начинается с GET https://api.redditfetch.com/v1/comments?subreddit=javascript&limit=3. Параметр subreddit=javascript выбирает сообщество, а limit=3 ограничивает ответ тремя комментариями. Это верхняя граница, а не обещание заполнить три карточки. Записей может оказаться меньше, успешный ответ бывает пустым. Полученные фрагменты не обязательно относятся к одному обсуждению, даже если на экране они стоят рядом.
Оставьте запрос внутри своего сервиса
Выполняйте fetch в серверном процессе Node.js. Значение REDDIT_FETCH_API_KEY загрузите из защищённой конфигурации и проверьте до обращения к архиву. Для авторизации подходят оба заголовка: Authorization: Bearer <key> и X-API-Key: <key>. Вместо шаблона подставляется сохранённый секрет. Он нужен вашему серверу, но не должен попадать в JavaScript, который скачивает браузер посетителя.
На первом этапе оставьте адрес запроса фиксированным. После проверки ответа сервер может передать браузеру только подготовленный результат для отображения. Не превращайте введённый посетителем URL в адрес обращения с вашим ключом. Отдельно определите, кто и как часто может обновлять предпросмотр: сокрытие секрета само по себе не ограничивает число платных запросов через ваш маршрут.
Разделите пустой результат и неудачную загрузку
Завершившийся fetch ещё не означает успешный HTTP-ответ. Сначала проверьте response.ok, затем разбирайте JSON и необходимые поля. Сетевое исключение обрабатывается отдельно: при нём у приложения может не быть HTTP-ответа для проверки. Ошибка разбора JSON также отличается от отсутствия комментариев. Каждому случаю нужна своя понятная реакция, чтобы экран не объявлял любую проблему пустой выборкой.
Комментарии приходят плоскими фрагментами. Проверяйте доступный текст, задавайте местную подпись для отсутствующего значения и выводите содержимое как текст. Состояния загрузки, готового предпросмотра, пустого результата и ошибки определяет ваше приложение. Пустая порция из архива не доказывает, что в сообществе нет комментариев. Точно так же три показанных фрагмента не составляют полного дерева ответов.
Определите цену следующего обновления
Успешный запрос списывает один кредит, даже если он пустой. Тариф составляет $1 за 1000 успешных запросов; минимальное пополнение $50 даёт 50000 платных кредитов. Пробные кредиты зависят от права на их получение. Локально сохранённый результат можно использовать без нового обращения, но успешное обновление будет ещё одним платным запросом, даже когда видимый текст не изменился.
Архив независим от Reddit, не связан с ним официально и не предоставляет поток новых комментариев. Полнота, постоянная доступность и неизменность выдачи не гарантируются. Подпишите предпросмотр как исторический; порядок архива не означает сортировку по новизне. На странице ключа подготовьте серверный доступ, в руководстве разберите обработку ответа, а в документации уточните состав полей.