Axios et récupérer l'API ? Choisir le bon client HTTP
TL;DR : Axios et Fetch API sont des clients HTTP populaires. Axios offre plus de fonctionnalités et une gestion des erreurs plus facile, tandis que l'API Fetch est légère et native pour les navigateurs. Choisissez Axios pour les projets complexes et Fetch pour les plus simples
Deux des méthodes les plus courantes pour gérer les requêtes HTTP asynchrones sont fetch() et Axios. Bien qu'il s'agisse d'une opération courante, le type de demande avec lequel vous choisissez de travailler peut avoir une influence considérable sur la convivialité et l'efficacité globale d'une application. Il est donc sage de les examiner minutieusement et de peser le pour et le contre avant d’en choisir un.
Cet article comparera de manière exhaustive ces deux outils largement utilisés pour vous aider à faire le meilleur choix pour votre projet.
Qu’est-ce qu’Axios ?
est un client HTTP tiers basé sur des promesses, couramment utilisé dans les environnements de navigateur ( XMLHttpRequests) et Node.js (HTTP). Il fournit une API pratique capable d'intercepter les requêtes et les réponses, d'effectuer des annulations de requêtes et d'analyser automatiquement les données de réponse au format JSON. Axios prend également en charge la protection côté client contre XSRF (contrefaçon de requêtes intersites). Vous pouvez installer Axios avec un gestionnaire de packages comme npm ou l'ajouter à votre projet via un CDN.
// NPM npm install axios // CDN <script src="https://cdn.jsdelivr.net/npm/axios@1.6.7/dist/axios.min.js"></script>
Avantages d'Axios
- Annulation automatique de la demande.
- Gestion des erreurs intégrée, intercepteurs et syntaxe propre.
- Compatibilité avec une large gamme de navigateurs anciens et modernes.
- Basé sur une promesse.
Inconvénients d’Axios
- Dépendance externe.
- Grande taille du bundle et complexité notable.
Qu'est-ce que fetch() ?
L'API Fetch est également basée sur des promesses mais une API JavaScript native disponible dans tous les navigateurs modernes. Il est également compatible avec les environnements Node.js et a remplacé l'ancien XMLHttpRequests par une approche plus simple et plus contemporaine. L'API Fetch fournit la méthode fetch() pour envoyer des requêtes et prend en charge plusieurs types de requêtes et de réponses tels que JSON, Blob et FormData.
Avantages de fetch()
- Support natif du navigateur, donc pas de dépendances externes.
- API légère et plus simple.
- Basé sur une promesse.
- fetch() est une API de bas niveau. Ainsi, il offre un contrôle plus fin.
Inconvénients de fetch()
- Fonctionnalités intégrées limitées pour la gestion des erreurs et le délai d'attente des demandes par rapport à Axios.
- Code détaillé pour les tâches courantes.
Différences entre Axios et fetch()
Puisque vous comprenez maintenant ce que sont Axios et fetch(), comparons et contrastons certaines fonctionnalités clés de ces deux-là avec des exemples de code.
Syntaxe de base
En ce qui concerne la syntaxe, Axios propose une syntaxe plus compacte et plus conviviale pour les développeurs que fetch().
Requête POST simple avec Axios :
// NPM npm install axios // CDN <script src="https://cdn.jsdelivr.net/npm/axios@1.6.7/dist/axios.min.js"></script>
Demande POST similaire avec fetch() :
axios.post('https://jsonplaceholder.typicode.com/todos', { userId: 11, id: 201, title: "Try Axios POST", completed: true }) .then(response => { document.getElementById('output').innerHTML = ` <h2>Post Created:</h2> <p>Title: ${response.data.title}</p> <p>Completed status: ${response.data.completed}</p> `; }) .catch(error => { console.error('Error:', error); document.getElementById('output').innerHTML = '<p>Error creating post.</p>'; });
C'est assez visible car même si fetch() est léger, il nécessite toujours plus de travail manuel pour effectuer certaines tâches courantes. Par exemple, Axios est livré avec une analyse JSON automatique et peut accéder directement à l'objet de données de la réponse. En revanche, dans fetch(), vous devez analyser manuellement la réponse au format JSON. Bien que les deux approches présentées produisent des résultats similaires, vous devez gérer explicitement les erreurs, les sérialisations et les en-têtes dans fetch().
Gestion des erreurs
La gestion des erreurs est quelque chose que les développeurs rencontrent presque tous les jours. Axios, par exemple, traite par défaut tout appel HTTP avec un code d'état en dehors de la plage 2xx. Il vous donne un objet explicatif utile pour gérer et déboguer vos erreurs.
fetch('https://jsonplaceholder.typicode.com/todos', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ // Manually converting the object to JSON userId: 11, id: 202, title: 'Try Fetch POST', completed: true }) }) .then(response => { if (!response.ok) { // Manual error handling for HTTP errors throw new Error('Error creating post'); } return response.json(); // Manually parsing the response to JSON });
fetch() ne traite pas automatiquement les erreurs HTTP (codes d'état 4xx ou 5xx) comme des erreurs. Vous devez effectuer des vérifications conditionnelles manuellement pour identifier l'état de la réponse afin de capturer l'erreur. Mais vous pouvez avoir une logique personnalisée de gestion des erreurs au sein de votre projet pour collecter des informations et gérer les erreurs comme le fait Axios.
axios.get('https://jsonplaceholder.typicode.com/invalid_endpoint') .then(response => { console.log(response.data); }) .catch(error => { if (error.response) { // Server responded with a status outside of 2xx console.log('Error Status:', error.response.status); console.log('Error Data:', error.response.data); } else if (error.request) { console.log('Error Request:', error.request); } else { console.log('Error Message:', error.message); }});
Compatibilité descendante avec les navigateurs
Si vous avez besoin d'une compatibilité avec des dépendances héritées, telles qu'un navigateur plus ancien comme Internet Explorer (IE11) ou des versions plus anciennes de la plupart des navigateurs modernes, votre solution privilégiée est Axios.
fetch() est natif des navigateurs modernes et fonctionne parfaitement avec eux. Cependant, il ne prend pas en charge certaines anciennes versions de navigateur. Vous pouvez toujours l'utiliser avec des polyfills comme whatwg-fetch pour le faire fonctionner dans les navigateurs qui n'utilisent pas fetch(). Il est important de noter que l'utilisation de polyfills peut cependant augmenter la taille de votre bundle et affecter les performances.
!(https://www.syncfusion.com/blogs/wp-content/uploads/2024/11/Fetch-compatibility.png)
Intercepteurs HTTP
Les intercepteurs HTTP permettent d'intercepter les requêtes et les réponses et s'avèrent utiles lorsque :
- Modification des requêtes (par exemple, lors de l'ajout d'une authentification aux en-têtes).
- Transformation des réponses (prétraitement des données de réponse).
- Gestion des erreurs à l'échelle mondiale (enregistrement et redirection en cas de rencontre d'un 401 non autorisé).
Cette fonctionnalité puissante est prête à l'emploi avec Axios mais n'est pas supportée nativement par fetch().
Ajout d'un jeton d'authentification aux requêtes avec Axios :
// NPM npm install axios // CDN <script src="https://cdn.jsdelivr.net/npm/axios@1.6.7/dist/axios.min.js"></script>
Cependant, cela ne signifie pas que fetch() ne peut pas effectuer d'interception HTTP. Vous pouvez utiliser un middleware pour écrire manuellement un wrapper personnalisé afin d'imiter ce comportement.
Ajout d'un jeton d'authentification aux requêtes avec le wrapper fetch() :
axios.post('https://jsonplaceholder.typicode.com/todos', { userId: 11, id: 201, title: "Try Axios POST", completed: true }) .then(response => { document.getElementById('output').innerHTML = ` <h2>Post Created:</h2> <p>Title: ${response.data.title}</p> <p>Completed status: ${response.data.completed}</p> `; }) .catch(error => { console.error('Error:', error); document.getElementById('output').innerHTML = '<p>Error creating post.</p>'; });
Délai de réponse
Le délai d'attente de réponse fait référence au temps pendant lequel un client attendra que le serveur réponde. Si ce délai est dépassé, la demande est considérée comme infructueuse. Axios et fetch() prennent en charge les délais d'attente des requêtes, essentiels lorsqu'il s'agit de réseaux peu fiables ou lents. Néanmoins, Axios prend les devants en proposant une approche plus simple de la gestion des temps morts.
Un time-out de demande avec Axios :
fetch('https://jsonplaceholder.typicode.com/todos', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ // Manually converting the object to JSON userId: 11, id: 202, title: 'Try Fetch POST', completed: true }) }) .then(response => { if (!response.ok) { // Manual error handling for HTTP errors throw new Error('Error creating post'); } return response.json(); // Manually parsing the response to JSON });
Un délai d'attente de requête avec fetch() :
axios.get('https://jsonplaceholder.typicode.com/invalid_endpoint') .then(response => { console.log(response.data); }) .catch(error => { if (error.response) { // Server responded with a status outside of 2xx console.log('Error Status:', error.response.status); console.log('Error Data:', error.response.data); } else if (error.request) { console.log('Error Request:', error.request); } else { console.log('Error Message:', error.message); }});
Axios gère les délais d'attente plus simplement et plus gracieusement avec un code plus propre grâce à son option de délai d'attente. Mais fetch() nécessite une gestion manuelle du délai d'attente avec AbortController(), ce qui vous donne plus de contrôle sur comment et quand la requête est abandonnée.
Référence GitHub
Pour plus de détails, reportez-vous aux exemples complets d'Axios vs. Fetch sur le référentiel GitHub.
Conclusion
Comme de nombreux outils, Axios et l'API Fetch présentent des forces et des faiblesses. Si vous avez besoin d'une analyse automatique de JSON, d'une gestion intégrée des erreurs et d'intercepteurs pour rationaliser les processus compliqués, optez pour Axios. Choisissez fetch() si vous souhaitez une interface pure et simple qui convient le mieux aux environnements de navigateur modernes et ne nécessite pas de bibliothèque externe. En bref, les deux fonctionnent bien, mais ils sont adaptés à différents niveaux de complexité et d'exigences de fonctionnalités.
Blogs connexes
- 5 meilleures pratiques pour gérer les erreurs HTTP en JavaScript
- Top 5 des extensions Chrome pour le traitement des requêtes HTTP
- Comment migrer les gestionnaires et modules HTTP ASP.NET vers le middleware ASP.NET Core
- Gérer efficacement les actions CRUD dans Syncfusion ASP.NET MVC DataGrid avec demande de récupération
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

Les principales utilisations de JavaScript dans le développement Web incluent l'interaction client, la vérification du formulaire et la communication asynchrone. 1) Mise à jour du contenu dynamique et interaction utilisateur via les opérations DOM; 2) La vérification du client est effectuée avant que l'utilisateur ne soumette les données pour améliorer l'expérience utilisateur; 3) La communication de rafraîchissement avec le serveur est réalisée via la technologie AJAX.

L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

C et C jouent un rôle essentiel dans le moteur JavaScript, principalement utilisé pour implémenter des interprètes et des compilateurs JIT. 1) C est utilisé pour analyser le code source JavaScript et générer une arborescence de syntaxe abstraite. 2) C est responsable de la génération et de l'exécution de bytecode. 3) C met en œuvre le compilateur JIT, optimise et compile le code de point chaud à l'exécution et améliore considérablement l'efficacité d'exécution de JavaScript.

Python est plus adapté à la science et à l'automatisation des données, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python fonctionne bien dans la science des données et l'apprentissage automatique, en utilisant des bibliothèques telles que Numpy et Pandas pour le traitement et la modélisation des données. 2. Python est concis et efficace dans l'automatisation et les scripts. 3. JavaScript est indispensable dans le développement frontal et est utilisé pour créer des pages Web dynamiques et des applications à une seule page. 4. JavaScript joue un rôle dans le développement back-end via Node.js et prend en charge le développement complet de la pile.
