Client HTTP pour TypeScript : top bibliothèques pour applications web modernes
TypeScript a solidement conquis la place de langage principal pour le développement frontend et les applications serveur sur Node.js. L'une des tâches clés auxquelles chaque développeur est confronté est l'envoi de requêtes HTTP aux API. Le choix du bon client HTTP influence les performances, la lisibilité du code et la facilité de débogage. Dans cet article, nous analyserons les meilleures bibliothèques pour travailler avec HTTP en TypeScript, leurs caractéristiques, leurs points forts et fournirons des exemples de code pratiques.
1. Axios — le standard universel
Axios reste le client HTTP le plus populaire, aussi bien pour le navigateur que pour Node.js. Son principal avantage est une riche fonctionnalité "prête à l'emploi" : prise en charge des intercepteurs, conversion automatique du JSON, annulation des requêtes et protection contre XSRF.
En TypeScript, Axios s'intègre presque parfaitement. Vous pouvez typer les réponses en utilisant les génériques, ce qui rend le code sûr et prévisible.
import axios, { AxiosResponse } from 'axios';
interface User { id: number; name: string; email: string;}
async function fetchUser(id: number): Promise<User> { const response: AxiosResponse<User> = await axios.get<User>(`/api/users/${id}`); return response.data;}
// UtilisationfetchUser(1).then(user => console.log(user.name));Avantages : immense communauté, nombreux exemples, prise en charge de la progression du téléchargement, gestion intégrée des erreurs.
Inconvénients : la taille du bundle (~14 KB gzippé) peut être excessive pour des projets simples.
2. Fetch API — le choix natif
Intégré aux navigateurs, Fetch API est devenu ces dernières années un remplacement complet de XMLHttpRequest. Pour les développeurs TypeScript, cela signifie l'absence de dépendances superflues. Cependant, Fetch natif nécessite plus de travail manuel : pas de levée d'erreur automatique pour les statuts 4xx/5xx, et un polyfill est nécessaire pour Node.js.
interface Post { userId: number; id: number; title: string; body: string;}
async function getPosts(): Promise<Post[]> { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); if (!response.ok) { throw new Error(`Erreur HTTP ! statut : ${response.status}`); } return response.json() as Promise<Post[]>;}
getPosts().then(posts => console.log(posts[0].title));Avantages : taille de bundle nulle, prise en charge complète de Streams API, architecture basée sur les Promesses.
Inconvénients : nécessité de vérifier manuellement les statuts de réponse, absence de timeouts par défaut, complexité pour annuler les requêtes (AbortController).
3. Got — un outil puissant pour Node.js
La bibliothèque Got a été créée spécialement pour l'environnement serveur Node.js. Elle offre des fonctionnalités avancées : prise en charge de HTTP/2, mécanismes de réessai, mise en cache, gestion des cookies et des proxys. Pour TypeScript, Got fournit un excellent typage.
import got from 'got';
interface ApiResponse { status: string; data: { id: number; value: string; };}
async function fetchData(): Promise<ApiResponse> { const response = await got.get('https://api.example.com/data', { responseType: 'json', retry: { limit: 3 }, timeout: { request: 5000 } }).json<ApiResponse>(); return response;}
fetchData().then(result => console.log(result.data.value));Avantages : API riche pour des scénarios complexes, gestion intégrée des erreurs, prise en charge des flux, excellente documentation.
Inconvénients : ne fonctionne pas dans le navigateur, taille relativement importante (~10 KB gzippé), excessif pour de simples requêtes GET.
4. Ky — léger et moderne
Ky est un client HTTP minimaliste construit au-dessus de Fetch API. Il résout les principaux problèmes de Fetch natif : ajoute des ta
Aussi dans la bibliothèque
Surveillance des applications PHP avec les bibliothèques php-ast et xhprof
Bibliothèque WebSocket Ratchet pour PHP : création en temps réel sur le site
Planificateur de tâches PHP : tâches de type cron sans crond
Planificateur de tâches Swift : GCD, OperationQueue et Combine pour iOS/macOS
Travailler avec Excel en TypeScript : bibliothèques, outils et exemples de code