Coleta app: cache, autenticação e conectividade no cliente HTTP
O cliente HTTP móvel centraliza a comunicação em WebConnectorImpl e coordena cache, autenticação, retries e operação offline:
- O
DioCacheInterceptordeve ser registrado antes do interceptor de autenticação/refresh. Um cache hit pode retornar antecipadamente; assim, o refresh de token só é acionado quando há cache miss real. - Respostas HTTP
304 Not Modifiedsão válidas durante a revalidação de cache e não devem ser convertidas em exceções. - Retries devem ser limitados a falhas transitórias de conexão ou timeout e somente enquanto o serviço de conectividade indicar que há rede. Quando o dispositivo está offline, falhar imediatamente evita esperas e logs duplicados.
- Requisições de escrita, como
POST, não usam cache. Quando apropriado, o chamador deve persistir a operação na fila offline para sincronização posterior. - A URL base é mantida em
ApiService; o conector atualiza suabaseUrlapós verificar a disponibilidade do servidor, permitindo separar seleção de ambiente/fallback da execução das requisições.
Consequências
Essa separação reduz refreshes desnecessários, evita retries inúteis sem rede e mantém a lógica de cache, seleção de endpoint e fila offline previsível. Alterações de endpoint de produção devem ser feitas no ApiService, não em cada repositório ou chamada individual.