Pular para o conteúdo principal

API Client

ArchbaseApiClient é um wrapper opinado em volta do Dio, com interceptors prontos para auth (Bearer + refresh coordenado em 401), logging conciso e normalização de erros.

Métodos

MétodoUso
getJson<T>(path, fromJson)GET retornando objeto único
getList<T>(path, fromJson)GET retornando lista
getPaged<T>(path, fromJson)GET com paginação Spring Data Pageable
postJson<T>(path, body, fromJson)POST com body JSON
putJson<T>(path, body, fromJson)PUT com body JSON
delete(path)DELETE
upload(path, file, {fields})POST multipart com arquivo

Todos retornam ApiResponse<T> — wrapper success/error com orThrow, map, fold.

Exemplo

final api = ArchbaseBootstrap.api;

// GET único
final response = await api.getJson<Cliente>(
'/clientes/123',
Cliente.fromJson,
);
final cliente = response.orThrow(); // joga ApiException se erro

// GET paginado
final page = await api.getPaged<Cliente>(
'/clientes',
Cliente.fromJson,
queryParameters: {'page': 0, 'size': 20, 'query': 'silva'},
);
final paginated = page.orThrow();
print('${paginated.content.length} de ${paginated.totalElements}');

// POST
final created = await api.postJson<Cliente>(
'/clientes',
{'name': 'João', 'email': 'joao@ex.com'},
Cliente.fromJson,
);

Auth automática

Quando você plugou um AuthService via ArchbaseBootstrap.setAuthService(...), o cliente automaticamente:

  • Adiciona Authorization: Bearer <token> em todas as requisições
  • Se receber 401, tenta refresh do token e re-tenta a requisição
  • Se o refresh falhar, dispara AuthException (sua tela pode reagir e redirecionar para login)

Não precisa fazer nada manual — basta ter chamado setAuthService.

Logging

Em ArchbaseEnv.dev, o ArchbaseLoggingInterceptor imprime requisições/respostas no console (com truncamento de payload grande). Em prod, o interceptor fica silencioso por padrão.

Para forçar logging em prod, configure no bootstrap:

await ArchbaseBootstrap.init(
config: const ArchbaseConfig(...),
enableLogging: true,
);