Récupérer la réponse : scoped,global
L’API Fetch Response fournit des méthodes pour créer un nouvel objet Response et pour gérer le corps de la réponse créé par une méthode Fetch Request API.
- Fetch : fetch(ressource de chaîne, options d’objet): démarre le processus d’extraction d’une ressource à partir du réseau.
- Extraire les en-têtes : dans le champ d’application, global: récupérer et modifier les en-têtes de demande et de réponse.
- Demande d’extraction : définie, globale: créer un objet de demande.
- Extraire RequestInit : dans le champ d’application, global: définir des options pour configurer une demande d’extraction.
- Récupérer la réponse : scoped,global: créer un objet de réponse.
Pour prendre en charge les actions d’extraction, la propriété système glide.hosts.allowlist permet de contrôler les hôtes auxquels une méthode d’extraction peut accéder. Il s’applique aux API HTTP comme RestMessageV2 et celles mentionnées ci-dessus. Pour plus d’informations sur glide.hosts.allowlist, reportez-vous à la section Available system properties.
Propriétés de la réponse
L’API de réponse fournit des propriétés qui renvoient des détails sur la réponse HTTP. Ces propriétés vous permettent d’accéder aux métadonnées (comme l’état, les en-têtes, le type) et au corps de la réponse (body) pour un traitement ultérieur. Ils permettent de vérifier la réussite d’une demande (ok) et d’analyser les données renvoyées dans différents formats (par exemple, JSON ou texte). Ces propriétés sont importantes pour la validation et la gestion des réponses du serveur dans les applications côté client. Pour lire des explications plus détaillées sur chaque propriété, reportez-vous à la section https://developer.mozilla.org/en-US/docs/Web/API/Response.
| Nom de la propriété | Description | Exemple |
|---|---|---|
| body | Prêt uniquement. Contient un flux lisible de données d’octets dans le contenu du corps de la réponse. Valeurs valides : A ReadableStream ou null. Type de données : chaîne |
|
| bodyUsed | Prêt uniquement. Marqueur indiquant si le corps a déjà été lu. Valeurs acceptées :
Type de données : booléennes |
|
| en-têtes | Lecture seule. Objet En-têtes associé à la réponse. Type de données : objet d’en-têtes |
|
| ok | Prêt uniquement. Marqueur indiquant si la réponse a réussi (état compris entre 200 et 299) ou non. Valeurs acceptées :
Type de données : booléennes |
|
| redirigé | Lecture seule. Marqueur indiquant si la réponse résulte d’une redirection de la demande. Valeurs acceptées :
Type de données : booléennes |
|
| statut | Lecture seule. Codes d’état HTTP de la réponse. Par exemple, 200 pour un succès. Type de données : nombre |
|
| Texte d’état | Lecture seule. Message d’état correspondant au code d’état HTTP dans response.status. Par exemple, cela conviendrait pour un code d’état 200, Continuer pour 100, Introuvable pour 404.Type de données : chaîne |
|
| type | Lecture seule. Type de réponse. Valeurs acceptées :
Type de données : chaîne |
|
| URL | Lecture seule. URL de la réponse. Type de données : chaîne |
|
Récupérer la réponse : réponse (corps de l’objet, options de l’objet)
Crée un nouvel objet de réponse à l’aide du constructeur Response( ).
| Nom | Type | Description |
|---|---|---|
| body | Objet | Facultatif. Un objet définissant un corps pour la réponse. Types valides :
Valeur par défaut : nul |
| options | Objet | Facultatif. Objet d’options contenant les paramètres personnalisés que vous souhaitez appliquer à la réponse, ou un objet vide (qui correspond à la valeur par défaut). Les options possibles sont les suivantes :
|
Dans cet exemple, nous créons un nouvel objet Response à l’aide du constructeur, en passant un nouvel objet Blob comme corps, et un objet init contenant des options d’état personnalisé et de statusText :
const myBlob = new Blob();
const myOptions = { status: 200, statusText: "Status message!" };
const myResponse = new Response(myBlob, myOptions);
Récupérer la réponse : arrayBuffer()
Renvoie une promesse qui se résout avec un ArrayBuffer.
La méthode arrayBuffer() est utile lorsque vous travaillez avec des données binaires telles que des images, des fichiers audio ou tout autre fichier binaire qui doit être traité.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Promesse qui se résout par un ArrayBuffer, qui représente un tampon de données binaires brutes générique. |
| Exception : | Description |
|---|---|
| DOMException : AbortError | Une exception indiquant que la demande a été abandonnée. |
| TypeError | Lancé pour l’une des raisons suivantes :
|
| RangeError | Un problème est survenu lors de la création de l’ArrayBuffer associé. Par exemple, si la taille des données est trop grande. |
- fetch() : Récupère une ressource à partir de l’URL spécifiée.
- response.ok: vérifie si l’état de la réponse est compris entre 200 et 299.
- arrayBuffer() : lit le corps de la réponse et le convertit en ArrayBuffer, qui représente un tampon de données binaires brutes générique de longueur fixe.
- Uint8Array : Convertit ArrayBuffer en Uint8Array, qui est un tableau typé pour faciliter la manipulation des données binaires.
javascriptCopy code// Simple API to fetch binary data and process it using arrayBuffer()asyncfunctionfetchBinaryData(url) {
try {
// Fetch the resource from the provided URLconst response = awaitfetch(url);
// Check if the response is successfulif (!response.ok) {
thrownewError(`HTTP error! Status: ${response.status}`);
}
// Convert the response body to an ArrayBufferconst arrayBuffer = await response.arrayBuffer();
// Process the ArrayBuffer (e.g., convert it to a typed array)const uint8Array = newUint8Array(arrayBuffer);
// Return the processed datareturn uint8Array;
} catch (error) {
console.error("Error fetching or processing binary data:", error);
throw error;
}
}
// Example usageconst binaryDataUrl = 'https://example.com/path/to/binary/data';
fetchBinaryData(binaryDataUrl)
.then((data) => {
console.log("Binary data as Uint8Array:", data);
// Further processing can be done here, e.g., rendering an image or playing audio
})
.catch((error) => {
console.error("Failed to fetch binary data:", error);
});Récupérer la réponse : blob()
Renvoie une promesse qui se résout par un objet blob.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Une promesse qui se résout avec un blob. |
| Exception : | Description |
|---|---|
| DOMException : AbortError | Une exception indiquant que la demande a été abandonnée. |
| TypeError | Lancé pour l’une des raisons suivantes :
|
- fetch(url) : Récupère une ressource à partir de l’URL spécifiée.
- response.blob() : convertit le corps de la réponse en objet blob, qui représente les données binaires.
- URL.createObjectURL(blob) : génère une URL temporaire pour l’objet blob, qui peut être utilisée dans le DOM (par exemple, comme source d’image).
- Ajout de l’image au DOM : crée dynamiquement un élément image, définit l’URL de l’objet blob comme source et l’ajoute au corps du document.
async function fetchBlob(url) {
try {
// Fetch the resource from the provided URL
const response = await fetch(url);
// Check if the response is successful
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
// Convert the response body to a Blob
const blob = await response.blob();
// Create a URL for the Blob and log it
const blobUrl = URL.createObjectURL(blob);
console.log("Blob URL:", blobUrl);
// For example, you can set it as the source of an image
const img = document.createElement('img');
img.src = blobUrl;
img.alt = "Fetched Blob Image";
document.body.appendChild(img);
} catch (error) {
console.error("Error fetching or processing blob:", error);
}
}
// Example usage with an image URL
const imageUrl = 'https://via.placeholder.com/150';
fetchBlob(imageUrl);
Récupérer la réponse : bytes()
Renvoie une promesse qui se résout avec un Uint8Array.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Une promesse qui se résout avec un Uint8Array. |
| Exception : | Description |
|---|---|
| DOMException- AbortError | La demande a été abandonnée. |
| TypeError | Lancé pour l’une des raisons suivantes :
|
| RangeError | Un problème est survenu lors de la création de l’ArrayBuffer associé. Par exemple, si la taille des données est trop grande. |
L’exemple suivant montre comment extraire un fichier texte, renvoyer le corps en tant que Uint8Array, puis le décoder en une chaîne.
const response = await fetch("https://www.example.com/textfile.txt");
const textFile = await response.bytes();
const string = new TextDecoder().decode(textFile);
console.log(string);
Récupérer la réponse : formData()
Renvoie une promesse qui se résout avec un objet FormData.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Promesse qui se résout avec un objet FormData . |
| Exception : | Description |
|---|---|
| DOMException- AbortError | La demande a été abandonnée. |
| TypeError | Lancé pour l’une des raisons suivantes :
|
- Corps de la demande : Utilisation de
JSON.stringify()pour envoyer les données du formulaire au format JSON au lieu de paramètres encodés en URL. - Type de contenu : défini sur
application/jsonpour indiquer le format du corps de la demande.
// Example of using Response.formData()
async function fetchFormData(url) {
try {
// Make a POST request to fetch the form data
const response = await fetch(url, {
method: 'POST',
body: JSON.stringify({
name: 'John Doe',
email: 'john.doe@example.com',
}),
headers: {
'Content-Type': 'application/json',
},
});
// Check if the response is successful
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
// Parse the response as FormData
const formData = await response.formData();
// Iterate through the FormData entries
for (const [key, value] of formData.entries()) {
console.log(`${key}: ${value}`);
}
} catch (error) {
console.error("Error fetching or processing form data:", error);
}
}
// Example usage
const formEndpoint = 'https://httpbin.org/post'; // Replace with your form endpoint
fetchFormData(formEndpoint);
Sortie :
name: John Doe
email: john.doe@example.com
Récupérer la réponse : json()
Renvoie une promesse qui se résout en résultat de l’analyse du corps de texte au format JSON.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Objet | Une promesse qui se résout en un objet JavaScript. Cet objet peut être tout ce qui peut être représenté par JSON, comme un objet, un tableau, une chaîne, un nombre, etc. |
| Exception : | Description |
|---|---|
| DOMException- AbortError | La demande a été abandonnée. |
| TypeError | Lancé pour l’une des raisons suivantes :
|
| Erreur de syntaxe | Le corps de la réponse ne peut pas être analysé en JSON. |
- fetch() fait une requête GET à l’URL.
- Vérifie response.ok si la demande a abouti (code d’état 200 à 299).
- En cas de succès, response.json() est appelé pour analyser les données JSON à partir de la réponse.
- Les données analysées sont journalisées dans les journaux système à l’aide de l’API de la console . Si une erreur se produit pendant la demande ou l’analyse, elle est interceptée et consignée.
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => console.log(data))
.catch(error => console.error('Fetch error:', error));
Récupérer la réponse : text()
Lit le corps de la réponse et le renvoie sous forme de chaîne brute. La réponse est toujours décodée à l’aide de l’UTF-8.
La méthode text() est utile pour les réponses qui contiennent des données textuelles, telles que les fichiers HTML, JSON (si vous souhaitez les gérer manuellement), XML ou texte brut qui sont destinés à être traités comme des chaînes brutes.
| Nom | Type | Description |
|---|---|---|
| Aucun |
| Type | Description |
|---|---|
| Néant | Une promesse qui se résout avec une chaîne de caractères UTF-8. |
| Exception : | Description |
|---|---|
| DOMException- AbortError | La demande a été abandonnée. |
| TypeError | Lancé pour l’une des raisons suivantes :
|
L’exemple suivant montre comment une façon simple d’utiliser text() lorsque le serveur renvoie du texte brut, comme Hello, world ! Il s’agit d’un exemple de réponse.
const response = awaitfetch('https://example.com/text-endpoint');
const text = await response.text();
console.log(text); // Outputs: Hello, world! This is a sample response.
Sortie :
Hello, world! This is a sample response.