fetch()
est une fonction JavaScript intégrée qui permet de réaliser des requêtes réseau asynchrones (AJAX) pour récupérer des ressources depuis un serveur. Elle est introduite dans les normes ECMAScript (ES) et est prise en charge par les navigateurs modernes.
fetch()
permet d'effectuer des requêtes HTTP (GET, POST, PUT, DELETE, etc.) vers des API ou des ressources externes pour récupérer des données au format JSON, texte, HTML, etc. C'est une alternative plus moderne et native à l'utilisation d'AJAX et elle simplifie les requêtes réseau en utilisant des Promesses.
fetch()
peut être considéré comme une alternative moderne à la méthode $.ajax()
de jQuery pour effectuer des requêtes AJAX. Elle offre une syntaxe plus simple et épurée sans dépendre d'une bibliothèque externe. Cependant, fetch()
est limitée aux requêtes AJAX et ne fournit pas certaines fonctionnalités avancées comme la prise en charge des anciens navigateurs, la gestion automatique des types de données, etc. Donc, dans certains cas, jQuery ou des bibliothèques AJAX plus avancées peuvent encore être utilisées.
fetch()
renvoie une Promesse qui peut être traitée à l'aide de la méthode then()
pour récupérer la réponse de la requête. Voici un exemple d'utilisation de fetch()
avec then()
:
Lorsque vous utilisez l'API Fetch en JavaScript pour faire des requêtes HTTP, la réponse (response) obtenue est un objet Response.
Cet objet contient plusieurs méthodes pour traiter le corps de la réponse de différentes manières, en fonction du type de données attendues. Voici les méthodes les plus couramment utilisées pour convertir le corps de la réponse :
fetch()
peut également être utilisée avec une fonction async
pour faciliter la gestion des Promesses avec l'utilisation de await
. Voici un exemple :
Différence entre then et fonction async :
Les deux approches (then
et async/await
) permettent de gérer des Promesses, mais la principale différence est dans la syntaxe et la lisibilité du code. L'utilisation de then()
implique une syntaxe en chaîne de fonctions, ce qui peut devenir complexe lorsqu'il y a plusieurs Promesses imbriquées. D'un autre côté, async/await
rend le code plus lisible et ressemble davantage à une structure synchrone, facilitant ainsi la gestion des erreurs à l'aide des blocs try/catch
.
En résumé, fetch()
est une fonction JavaScript native pour effectuer des requêtes AJAX. Elle peut être utilisée avec then()
pour gérer les Promesses de manière explicite ou avec async/await
pour une syntaxe plus simple et lisible. Cela dépend de la préférence du développeur et des besoins spécifiques du projet.
La gestion des authentifications avec fetch
, une API JavaScript pour les requêtes HTTP, implique souvent l'utilisation de headers HTTP pour transmettre des informations d'identification nécessaires. Voici comment cela fonctionne, ainsi qu'une explication des différents paramètres du header HTTP couramment utilisés.
Pour gérer l'authentification, vous devez inclure des informations spécifiques dans le header de votre requête fetch
. Ces informations peuvent être un token (comme un JWT - Json Web Token), un cookie, ou des identifiants de base (Basic Auth) encodés en Base64, selon le mécanisme d'authentification utilisé par l'API ou le serveur.
Exemple d'utilisation de Fetch avec un Token d'Authentification:
Dans cet exemple, Bearer votre_token_d_authentification
est utilisé pour l'authentification. Le préfixe Bearer
est courant avec les tokens d'authentification, spécialement avec les JWTs.
Les headers HTTP permettent au client et au serveur d'envoyer des informations supplémentaires avec une requête ou une réponse HTTP. Voici quelques paramètres de header HTTP couramment utilisés :
Authorization
: Contient les informations d'authentification pour accéder à une ressource. Peut inclure des tokens, des credentials de base, etc.Content-Type
: Indique le type de média du corps de la requête ou de la réponse. Par exemple, application/json
pour les données JSON.Accept
: Indique au serveur les types de média que le client est disposé à recevoir. Par exemple, application/json
pour indiquer que le client souhaite recevoir du JSON.Content-Length
: La taille en octets du corps de la requête ou de la réponse.User-Agent
: Contient une chaîne caractéristique permettant d'identifier le type de client qui fait la requête au serveur.Cookie
: Utilisé pour envoyer des cookies du client au serveur.Voici un exemple simple de l'utilisation de fetch
avec des headers pour une requête GET :
Dans cet exemple, le header spécifie que le client accepte les réponses en JSON (Accept: application/json
), envoie des données au format JSON (Content-Type: application/json
), et s'authentifie auprès du serveur avec un token (Authorization: Bearer votre_token_d_authentification
).
then()
Pour inclure une barre de navigation et un pied de page en tant que fichier HTML à l'aide de JavaScript, vous pouvez utiliser la fetch
fonction pour récupérer le fichier HTML, puis l'insérer dans le DOM à l'aide de la innerHTML
propriété ou de la insertAdjacentHTML
méthode.
Voici un exemple de la façon dont vous pouvez procéder :
Cela récupérera les fichiers navbar.html
et footer.html
et insèrera leur contenu dans les éléments avec respectivement id
de navbar
et footer
.
Notez que cela ne fonctionnera que si les fichiers HTML sont situés sur le même serveur que la page qui fait la demande. Si les fichiers HTML se trouvent sur un autre serveur, vous devrez utiliser une solution côté serveur ou une bibliothèque tierce comme jQuery pour effectuer la demande.
Pour inclure la barre de navigation et le pied de page en tant que fichier html avec la fonction asynchrone en javascript
Pour inclure une barre de navigation et un pied de page en tant que fichier HTML à l'aide d'une fonction asynchrone en JavaScript, vous pouvez utiliser la fetch
fonction pour récupérer le fichier HTML, puis l'insérer dans le DOM à l'aide de la innerHTML
propriété ou de la insertAdjacentHTML
méthode.
Voici un exemple de la façon dont vous pouvez le faire à l'aide d'une fonction asynchrone :
Cela récupérera les fichiers navbar.html
et footer.html
et insèrera leur contenu dans les éléments avec respectivement id
de navbar
et footer
.
Notez que cela ne fonctionnera que si les fichiers HTML sont situés sur le même serveur que la page qui fait la demande. Si les fichiers HTML se trouvent sur un autre serveur, vous devrez utiliser une solution côté serveur ou une bibliothèque tierce comme jQuery pour effectuer la demande.
Voici une application simple qui utilise PHP et JavaScript pour récupérer des données depuis une base de données MySQL et les affiche en format JSON dans une page web.
Code PHP (api.php
):
$host
, $user
, $password
, $database
).SELECT * FROM comments
) est exécutée pour récupérer tous les commentaires de la table "comments".$statement->fetchAll(PDO::FETCH_ASSOC)
.json_encode()
.header('Content-Type: application/json')
).Code HTML/JavaScript:
script
qui exécute une requête fetch()
vers l'URL http://localhost/blog-simplon/api.php
. Cela récupère les données JSON générées par le code PHP..then
analyse la réponse JSON de la requête et renvoie la promesse de données..then
, les données JSON sont manipulées. Ici, le code simplement affiche les données dans la console à l'aide de console.log(data)
..catch
gère toute erreur qui pourrait survenir lors de l'exécution de la requête fetch
. Si une erreur se produit, elle est affichée dans la console à l'aide de console.error(error)
.En résumé, ce code récupère des commentaires depuis une base de données MySQL à l'aide de PHP, les convertit en JSON, puis utilise JavaScript pour récupérer ces données JSON via une requête fetch() et les afficher dans la console du navigateur.