HTTP

Client HTTP duale (Fetch API e Axios), factory di creazione, gestione CORS e wrapper strategy-aware per @pzeta/postgrest.

Panoramica

Il layer HTTP di @pzeta/postgrest fornisce un'astrazione (IHttpClient) con due implementazioni complementari e un set di utility per autenticazione, retry automatico su 401 e gestione CORS.

Per la maggior parte dei casi d'uso usa FetchHttpClient (zero dipendenze) o crea il client tramite HttpClientFactory. AxiosHttpClient e StrategyAwareHttpClient coprono casi specifici.

Implementazioni disponibili

ComponenteQuando usarlo
FetchHttpClientDefault consigliato. Zero dipendenze, basato su Fetch API nativa, bundle size minimo, supporto Service Worker.
AxiosHttpClientQuando il progetto già usa Axios o servono interceptors avanzati, progress tracking upload/download, cancellazione richieste Axios-specifica.
StrategyAwareHttpClientWrapper su Axios che integra una IAuthStrategy moderna mantenendo backward compatibility con IAuthHandler legacy.
HttpClientFactoryFactory centrale per creare client preconfigurati: JWT, Cookie, pubblici, auth-only. Espone anche getDefaultHttpClient() (singleton) e createHttpClient(type, config).
CorsAdapterConfigurazione esplicita per richieste cross-origin: CorsConfig, ICorsAdapter, CorsAdapterFactory con preset di sviluppo.

Interfaccia comune

Tutte le implementazioni rispettano la stessa interfaccia IHttpClient:

interface IHttpClient {
  request<T = unknown>(config: AxiosRequestConfig): Promise<AxiosResponse<T>>
  get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>
  post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>
  put<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>
  patch<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>
  delete<T = unknown>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>
  setAuthHandler(handler: IAuthHandler): void
  getAxiosInstance(): AxiosInstance
}

Il tipo di ritorno è sempre AxiosResponse<T> anche per FetchHttpClient, che converte internamente la Response nativa tramite FetchAdapter.

Pagine