Reddit Fetch
Вибір мови

Отримали відповідь — що перевіряти далі

Пройдіть шлях запиту Node.js: перевірка ключа, response.ok, мережевий виняток, декодування JSON та власні стани відображення плоских записів.

Задайте межі одного перегляду

Цей приклад стосується невеликого перегляду історичних коментарів. Запускайте його в сервісі Node.js із доступним fetch. Зчитайте process.env.REDDIT_FETCH_API_KEY і зупиніть виконання, якщо налаштування відсутнє. Перевірка має відбутися до звернення до архіву. Користувачеві вашого застосунку потрібні підготовлені дані для екрана, а не секрет, за допомогою якого сервер отримав до них доступ.

Адреса прикладу — https://api.redditfetch.com/v1/comments?subreddit=javascript&limit=3. Передайте заголовок {"X-API-Key": key} або Authorization: Bearer <key>. Не підміняйте адресу довільним URL від відвідувача. Правила доступу до власного маршруту та обмеження його викликів встановлюєте ви. Заздалегідь вирішіть, коли відкриття екрана має оновити дані, а коли можна використати раніше збережений результат без нового запиту.

Відділіть HTTP-статус від мережевого винятку

Мережевий збій спричиняє виняток під час await fetch. Придатної відповіді HTTP у такій гілці може не бути. Водночас 401 або 402 можуть надійти через нормально виконаний проміс. Перевірте response.ok і розберіть неуспішний статус до того, як трактувати тіло відповіді як сторінку коментарів. Інакше помилка доступу ризикує перетворитися на оманливе повідомлення про порожній архів.

Для HTTP 400 виправте параметри, для 401 перевірте ключ, для 402 — залишок кредитів. На 429 за потреби реагуйте обмеженою кількістю повторів із затримкою. Повторювати без кінця будь-яку невдачу не слід. З’єднання може обірватися після платного успіху на сервері: мережевий виняток не доводить відсутності списання, а успішний повтор буде окремим платним отриманням.

Декодування ще не підтверджує придатність даних

Навіть після успішного HTTP-статусу await response.json() може завершитися помилкою. Зберігайте цю причину окремо від мережевого збою у власній діагностиці. Далі перевірте очікувану оболонку відповіді та чи є data масивом. Розібраний JSON — лише значення JavaScript. Він не доводить, що кожен запис має текст потрібного типу або всі поля, на які спирається ваша картка.

Визначте чесні стани екрана

Відбирайте поля, потрібні саме цьому перегляду. Розрізняйте відсутній текст і порожній рядок, зберігайте доступні ідентифікатори для зв’язку з початковими записами та відображайте вміст як текст. Коментарі є плоскими фрагментами. Додаткові поля зв’язків, якщо вони наявні, не доводять повноти гілки; за трьома записами неможливо встановити, що всі відповіді на коментар уже отримано.

Завантаження, готовий перегляд, порожній результат і помилка — ваші локальні стани. Перевірений порожній масив означає, що цей запит не надав записів. Якщо записи надійшли, але не пройшли перевірок для екрана, зафіксуйте іншу причину. Після невдалого оновлення можна залишити попередню копію видимою, чітко позначивши її походження та момент збереження вашим застосунком.

Не оновлюйте без потреби

Збережіть перевірений результат разом із параметрами звернення, перш ніж змінювати локальний прогрес. Використання копії не потребує нового отримання; кожен успішний запит, включно з порожнім, коштує один кредит. Архівний порядок не є хронологічним. Навіть перехід до кількох сторінок у межах 100 записів за запит і 100 сторінок за умовою не підтверджує вичерпного охоплення.

Формат полів та підсумків звіряйте з документацією, витрати — зі сторінкою тарифів, налаштування доступу — зі сторінкою ключа. Публічний неоплачуваний /v1/status надає статичний опис сервісу, а не перевірку доступності архіву. Зберігайте позначку історичного джерела й не обіцяйте читачеві живих оновлень, незмінного результату майбутнього звернення чи повної розмови на основі цих фрагментів.