Вибір мови

Обробляйте помилки API та повторюйте читання архіву свідомо

Розрізняйте помилки HTTP, невизначений результат мережевого збою та локальну обробку. Обмежуйте затримки, кількість повторів і витрати на успіхи.

Зафіксуйте результат до рішення про повтор

Сервіс надає незалежний історичний архів, а не офіційний живий API Reddit. Він не підтримує Reddit OAuth, публікації, голосування чи приватних повідомлень. Назва Reddit API Proxy не означає прозорого пересилання та обходу обмежень доступу. GET читає архівні записи, але за успіху впливає на облік кредитів. Режим читання не гарантує ідентичних результатів і не робить повтор безоплатним.

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

Почніть із https://api.redditapiproxy.com/v1/comments?subreddit=devops&limit=3 — прикладу з головної. Зберігайте ключ на сервері, використовуйте X-API-Key: <ключ> або Authorization: Bearer <ключ>. Обидві схеми працюють незалежно від сесії панелі. Перевірте хост, параметри й форму заголовка без запису секрету до журналу. Запит просить щонайбільше три коментарі, а не повну розмову devops або гарантовано корисну вибірку.

Виберіть дію для кожного коду HTTP

За 400 виправте параметри й переконайтеся, що маршрут їх приймає. Пошук вмісту допускає q, subreddit, author, kind, from, to, min_score, limit і page; item потребує лише id, subreddits приймає prefix і limit. Не повторюйте непідтримуваний фільтр parent_id і не передавайте URL-адресу Reddit замість ідентифікатора. Правильний контракт запиту корисніший за нескінченне збільшення кількості спроб.

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

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

Зберігайте межі сторінок і витрати разом із даними

Запит вмісту повертає до 100 записів, page приймає від 1 до 100 в окремих зверненнях. Порядок _doc не є хронологією, релевантністю чи оцінкою. from/to використовують YYYY-MM-DD UTC з повністю включеним останнім днем; min_score фільтрує без сортування. Плоскі записи можуть містити parent_id та link_id для локального групування; повна розмова й ланцюжок батьківських записів не обіцяються.

Читайте total разом із relation: eq — точний підсумок запиту, gte — нижня межа, unknown — ненадійне значення або null. Жодне не доводить, що всі записи завантажені. Поділ дат і локальне усунення дублікатів організують обробку, не встановлюючи повноти, унікальності чи стабільності повторної видачі. Зберігайте відсутні поля та нерозв’язані посилання, не прирівнюючи завершену чергу повторів до повного завантаження архіву.

Кожен успішний запит, включно з порожнім результатом і повтором, коштує один кредит. Некоректні запити не списуються, збій джерела повертає резерв, але втрачена відповідь і локальна помилка бази даних не доводять повернення. До планування прочитайте ціни: $1 за 1000 успіхів, мінімум $50 для платної купівлі та умовні 100 пробних кредитів. Безоплатний /v1/status підтверджує лише HTTP-відповідь і статичний опис, не розв’язуючи питання невизначеного отримання або балансу.