Delimite uma prévia histórica
Esta receita prepara uma pequena prévia de comentários. Execute a chamada em um backend Node.js com fetch disponível. Leia process.env.REDDIT_FETCH_API_KEY nesse ambiente e interrompa a operação se faltar o valor, antes de contatar o arquivo. O usuário do seu aplicativo deve receber dados preparados para a tela, nunca o segredo usado pelo servidor para autorizar a recuperação.
Use o destino fixo https://api.redditfetch.com/v1/comments?subreddit=javascript&limit=3 e um cabeçalho como {"X-API-Key": key}. Authorization: Bearer <key> é igualmente válido. Não substitua esse destino por uma URL arbitrária recebida do navegador. Seu aplicativo define o acesso e os limites da própria rota, inclusive quando um visitante pode iniciar uma nova atualização paga da prévia.
Diferencie resposta HTTP de exceção de rede
Uma operação de rede rejeitada chega ao catch que envolve await fetch, sem fornecer uma resposta HTTP utilizável para classificação. Já um HTTP 401 ou 402 pode chegar por uma promessa resolvida. Primeiro examine response.ok. Trate o status sem sucesso antes de interpretar qualquer corpo recebido como uma página de comentários recuperada corretamente.
Para HTTP 400, corrija os parâmetros; para 401, confira a chave; para 402, verifique o saldo. Em um 429, pode fazer sentido repetir com atraso e quantidade limitada de tentativas. Não repita automaticamente todo erro. A conexão pode cair depois de um sucesso cobrado no servidor, portanto uma exceção local não prova que a solicitação saiu de graça.
Decodifique e valide o que veio
No caminho de sucesso, await response.json() também pode falhar. Mantenha essa causa separada da falha de transporte no diagnóstico interno. Depois confira a estrutura esperada e se data é um array. Analisar JSON só produz um valor JavaScript: isso não confirma que cada registro tenha texto utilizável nem que todos os campos da sua tela apresentem o tipo necessário.
Dê estados próprios aos fragmentos
Transforme apenas os campos usados pela prévia. Diferencie texto ausente de uma string vazia, preserve identificadores disponíveis para ligar a tela ao registro e exiba o conteúdo como texto. Os comentários são fragmentos planos. Campos opcionais de relacionamento não comprovam uma discussão completa; três registros tampouco estabelecem que todas as respostas de um comentário tenham sido recuperadas.
Defina carregamento, conteúdo disponível, vazio e falha como estados locais. Um array vazio validado significa que aquela chamada não entregou registros. Se chegaram registros, mas nenhum passou pelas suas verificações de exibição, anote essa causa separadamente. Uma prévia salva pode continuar visível durante uma atualização malsucedida, desde que seja identificada como cópia anterior, sem parecer um retorno novo.
Decida se vale fazer outra solicitação
Guarde o resultado validado junto dos parâmetros antes de avançar o progresso local. Reutilizar a cópia não exige nova recuperação; toda atualização bem-sucedida custa um crédito, mesmo vazia. A ordem do arquivo não é cronológica. Ampliar a coleta até 100 registros por solicitação e 100 páginas por consulta ainda não demonstra cobertura exaustiva nem acesso a uma conversa completa.
Consulte a documentação para campos e totais, a página de preços para custos e a página da chave para a configuração da conta. /v1/status é uma declaração estática pública e sem cobrança, não um teste de disponibilidade do arquivo. Mantenha a origem histórica visível e não prometa novidades ao vivo, resultados futuros idênticos ou todas as participações de uma discussão.