Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Window : méthode fetch()

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨mars 2017⁩.

* Some parts of this feature may have varying levels of support.

La méthode fetch() de l'interface Window lance le processus de récupération d'une ressource sur le réseau et retourne une promesse qui est résolue lorsque la réponse est disponible.

La promesse est résolue avec l'objet Response représentant la réponse à votre requête.

Une promesse fetch() n'est rejetée que si la requête échoue, par exemple à cause d'une URL mal formée ou d'une erreur réseau. Une promesse fetch() n'est pas rejetée si le serveur répond avec un code d'état HTTP signalant une erreur (404, 504, etc.). Dans ce cas, il faut vérifier les propriétés Response.ok et/ou Response.status dans le gestionnaire then().

La méthode fetch() est contrôlée par la directive connect-src de la politique de sécurité du contenu (CSP), et non par la directive des ressources récupérées.

Note : Les paramètres de la méthode fetch() sont identiques à ceux du constructeur Request().

Syntaxe

js
fetch(resource) fetch(resource, options) 

Paramètres

resource

Définit la ressource à récupérer. Cela peut être :

  • Une chaîne de caractères ou tout objet disposant d'un stringifier — y compris un objet URL — qui fournit l'URL de la ressource à récupérer. L'URL peut être relative à l'URL de base, qui est baseURI dans le contexte d'une fenêtre, ou WorkerGlobalScope.location dans un worker.
  • Un objet Request.
options Facultatif

Un objet RequestInit contenant les paramètres personnalisés à appliquer à la requête.

Valeur de retour

Une Promise qui se résout avec un objet Response.

Exceptions

AbortError DOMException

La requête a été annulée suite à un appel à la méthode AbortController abort().

NotAllowedError DOMException

Levée si l'utilisation de l'API Topics est explicitement interdite par une politique de permissions browsing-topics et qu'une requête fetch() a été faite avec browsingTopics: true.

TypeError

Peut survenir pour les raisons suivantes :

  • L'URL demandée est invalide.
  • L'URL demandée inclut des identifiants (nom d'utilisateur et mot de passe).
  • L'objet RequestInit passé dans options contient des propriétés avec des valeurs invalides.
  • La requête est bloquée par une politique de permissions.
  • Il y a une erreur réseau (par exemple, si l'appareil n'a pas de connectivité).

Exemples

Dans l'exemple Fetch Request (angl.) (voir en direct), on crée un nouvel objet Request à l'aide du constructeur approprié, puis on le récupère avec un appel à fetch(). Comme il s'agit d'une image, on utilise Response.blob() sur la réponse pour obtenir le bon type MIME, puis on crée une URL objet et on l'affiche dans un élément <img>.

js
const myImage = document.querySelector("img"); const myRequest = new Request("flowers.jpg"); window .fetch(myRequest) .then((response) => { if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } return response.blob(); }) .then((response) => { myImage.src = URL.createObjectURL(response); }); 

Dans l'exemple Fetch Request avec init (angl.) (voir en direct), on fait la même chose sauf qu'on passe un objet options lors de l'appel à fetch(). On peut alors définir une valeur Cache-Control pour indiquer le type de réponses en cache acceptées :

js
const myImage = document.querySelector("img"); const reqHeaders = new Headers(); // Une réponse en cache est acceptée sauf si elle a plus d'une semaine reqHeaders.set("Cache-Control", "max-age=604800"); const options = { headers: reqHeaders, }; // On passe l'objet "options" avec nos en-têtes. const req = new Request("flowers.jpg", options); fetch(req).then((response) => { // … }); 

On peut aussi passer l'objet init au constructeur Request pour obtenir le même effet :

js
const req = new Request("flowers.jpg", options); 

On peut également utiliser un objet littéral comme headers dans init :

js
const options = { headers: { "Cache-Control": "max-age=60480", }, }; const req = new Request("flowers.jpg", options); 

L'article Utiliser fetch fournit d'autres exemples d'utilisation de fetch().

Spécifications

Specification
Fetch
# fetch-method

Compatibilité des navigateurs

Voir aussi