Window : méthode fetch()
Baseline
Widely available
*
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2017.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
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
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 estbaseURIdans le contexte d'une fenêtre, ouWorkerGlobalScope.locationdans un worker. - Un objet
Request.
- Une chaîne de caractères ou tout objet disposant d'un stringifier — y compris un objet
optionsFacultatif-
Un objet
RequestInitcontenant les paramètres personnalisés à appliquer à la requête.
Valeur de retour
Exceptions
AbortErrorDOMException-
La requête a été annulée suite à un appel à la méthode
AbortControllerabort(). NotAllowedErrorDOMException-
Levée si l'utilisation de l'API Topics est explicitement interdite par une politique de permissions
browsing-topicset qu'une requêtefetch()a été faite avecbrowsingTopics: 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
RequestInitpassé dansoptionscontient 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>.
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 :
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 :
const req = new Request("flowers.jpg", options);
On peut également utiliser un objet littéral comme headers dans init :
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
Chargement…