Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
web:js:ajax [2023/04/02 12:23] – [Response] jcheron | web:js:ajax [2023/10/12 11:11] (Version actuelle) – [API Fetch] jcheron | ||
---|---|---|---|
Ligne 63: | Ligne 63: | ||
L'api fetch permet en javascript d' | L'api fetch permet en javascript d' | ||
- | **feetch** fonctionne selon la syntaxe suivante : | + | **fetch** fonctionne selon la syntaxe suivante : |
<sxh javascript; | <sxh javascript; | ||
let promise = fetch(url, [options]) | let promise = fetch(url, [options]) | ||
Ligne 100: | Ligne 100: | ||
Requête vers l'api Github pour obtenir la liste des messages de commits d'un repo : | Requête vers l'api Github pour obtenir la liste des messages de commits d'un repo : | ||
+ | Version **await** : | ||
<sxh javascript> | <sxh javascript> | ||
let url = ' | let url = ' | ||
Ligne 109: | Ligne 110: | ||
</ | </ | ||
+ | Version **then** | ||
+ | <sxh javascript> | ||
+ | fetch(' | ||
+ | .then(response => response.json()) | ||
+ | .then(commits => alert(commits[0].message)); | ||
+ | </ | ||
+ | |||
+ | Chargement d' | ||
+ | |||
+ | <sxh javascript> | ||
+ | let response = await fetch('/ | ||
+ | |||
+ | let blob = await response.blob(); | ||
+ | |||
+ | // Création d img | ||
+ | let img = document.createElement(' | ||
+ | img.style = ' | ||
+ | document.body.append(img); | ||
+ | |||
+ | // Affichage | ||
+ | img.src = URL.createObjectURL(blob); | ||
+ | |||
+ | setTimeout(() => { // Effacement après 3 secondes | ||
+ | img.remove(); | ||
+ | URL.revokeObjectURL(img.src); | ||
+ | }, 3000); | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | <div class=" | ||
+ | <button id=" | ||
+ | </ | ||
+ | < | ||
+ | | ||
+ | let response = await fetch('/ | ||
+ | |||
+ | let blob = await response.blob(); | ||
+ | |||
+ | let img = document.createElement(' | ||
+ | img.style = ' | ||
+ | document.body.append(img); | ||
+ | |||
+ | img.src = URL.createObjectURL(blob); | ||
+ | |||
+ | setTimeout(() => { // le cacher après 3 secondes | ||
+ | img.remove(); | ||
+ | URL.revokeObjectURL(img.src); | ||
+ | }, 3000); | ||
+ | }); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Headers ==== | ||
+ | === Response === | ||
+ | L' | ||
+ | |||
+ | <sxh javascript> | ||
+ | let response = await fetch(' | ||
+ | |||
+ | // récupération d'un header | ||
+ | alert(response.headers.get(' | ||
+ | |||
+ | // itération sur tous les headers | ||
+ | for (let [key, value] of response.headers) { | ||
+ | alert(`${key} = ${value}`); | ||
+ | } | ||
+ | </ | ||
+ | === Request === | ||
+ | Les headers de la requête sont envoyées au travers des options du fetch : | ||
+ | <sxh javascript> | ||
+ | let response = fetch(protectedUrl, | ||
+ | headers: { | ||
+ | Authentication: | ||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | ==== POST ==== | ||
+ | La méthode HTTP utilisée peut également être spécifiée au travers des options, comme les données envoyées dans le body : | ||
+ | <sxh javascript> | ||
+ | let user = { | ||
+ | name: ' | ||
+ | surname: ' | ||
+ | }; | ||
+ | |||
+ | let response = await fetch('/ | ||
+ | method: ' | ||
+ | headers: { | ||
+ | ' | ||
+ | }, | ||
+ | body: JSON.stringify(user) | ||
+ | }); | ||
+ | </ | ||