Antwort abrufen – bereichsbezogen, global
Die API zum Abrufen der Antwort bietet Methoden zum Erstellen eines neuen Antwortobjekts und zum Bearbeiten des Antworttexts, der mit einer Methode der API zum Abrufen einer Anforderung erstellt wurde.
- Abrufen – abrufen (Zeichenfolgenressource, Objektoptionen): Startet den Prozess zum Abrufen einer Ressource aus dem Netzwerk.
- Header abrufen : bereichsbezogen, global: Anforderungs- und Antwortheader abrufen und ändern.
- Anforderung abrufen – bereichsbezogen, global: Erstellen Sie ein neues Anforderungsobjekt.
- RequestInit abrufen : Bereichsbezogen, global: Legen Sie Optionen zum Konfigurieren einer Abrufanforderung fest.
- Antwort abrufen – bereichsbezogen, global: Erstellen Sie ein neues Antwortobjekt.
Zur Unterstützung von Abrufaktionen ermöglicht die Systemeigenschaft glide.hosts.allowlistdie Steuerung, auf welche Hosts eine Abrufmethode zugreifen kann. Sie gilt für HTTP-APIs wie RestMessageV2 und die oben genannten. Weitere Informationen zu glide.hosts.allowlistfinden Sie unter Available system properties.
Antworteigenschaften
Die Antwort- API stellt Eigenschaften bereit, die Details zur HTTP-Antwort zurückgeben. Mit diesen Eigenschaften können Sie zur weiteren Verarbeitung auf Metadaten (wie Status, Header, Typ) und den Antworttext (body) zugreifen. Sie ermöglichen die Überprüfung des Erfolgs einer Anforderung (OK) und die Analyse der zurückgegebenen Daten in verschiedenen Formaten (z. B. JSON oder Text). Diese Eigenschaften sind wichtig für die Validierung und Verarbeitung von Serverantworten in clientseitigen Anwendungen. Ausführlichere Erklärungen zu den einzelnen Eigenschaften finden Sie unter https://developer.mozilla.org/en-US/docs/Web/API/Response.
| Eigenschaftsname | Beschreibung | Beispiel |
|---|---|---|
| body | Schreibgeschützt. Enthält einen lesbaren Stream von Bytedaten im Inhalt des Antworttexts. Gültige Werte: ReadableStream oder null. Datentyp: Zeichenfolge |
|
| „bodyUsed“ | Schreibgeschützt. Kennzeichnung, die angibt, ob der Textkörper bereits gelesen wurde. Akzeptierte Werte:
Datentyp: Boolesch |
|
| headers | Schreibgeschützt. Das Header-Objekt, das der Antwort zugeordnet ist. Datentyp: Headerobjekt |
|
| Okay | Schreibgeschützt. Kennzeichnung, die angibt, ob die Antwort erfolgreich war (Status im Bereich von 200 bis 299) oder nicht. Akzeptierte Werte:
Datentyp: Boolesch |
|
| Weitergeleitet | Schreibgeschützt. Kennzeichnung, die angibt, ob die Antwort ein Ergebnis ist, dass die Anforderung umgeleitet wurde. Akzeptierte Werte:
Datentyp: Boolesch |
|
| status | Schreibgeschützt. HTTP-Statuscodes der Antwort. Zum Beispiel 200 für Erfolg. Datentyp: Zahl |
|
| statusText | Schreibgeschützt. Statusnachricht, die dem HTTP-Statuscode in response.status entspricht Zum Beispiel wäre dies OK für einen Statuscode 200, Fortsetzen für 100, Nicht gefunden für 404.Datentyp: Zeichenfolge |
|
| Typ | Schreibgeschützt. Typ der Antwort Akzeptierte Werte:
Datentyp: Zeichenfolge |
|
| URL | Schreibgeschützt. URL der Antwort. Datentyp: Zeichenfolge |
|
Antwort abrufen – Antwort (Objekttext, Objektoptionen)
Erstellt ein neues Antwortobjekt mit dem Response()- Konstruktor.
| Name | Typ | Beschreibung |
|---|---|---|
| body | Objekt | Optional. Ein Objekt, das einen Textkörper für die Antwort definiert. Gültige Typen:
Standard: null |
| Optionen | Objekt | Optional. Ein Optionsobjekt, das anwenderdefinierte Einstellungen enthält, die Sie auf die Antwort anwenden möchten, oder ein leeres Objekt (Standardwert). Die möglichen Optionen lauten:
|
In diesem Beispiel erstellen wir mit dem Konstrukteur ein neues Antwortobjekt. Dabei übergeben wir einen neuen Blob als Textkörper und ein Init-Objekt mit anwenderdefinierten Optionen für status und statusText:
const myBlob = new Blob();
const myOptions = { status: 200, statusText: "Status message!" };
const myResponse = new Response(myBlob, myOptions);
Antwort abrufen – arrayBuffer()
Gibt eine Zusage zurück, die mit einem ArrayBuffer aufgelöst wird.
Die Methode „arrayBuffer()“ ist nützlich, wenn Sie mit Binärdaten wie Bildern, Audiodateien oder anderen Binärdateien arbeiten, die verarbeitet werden müssen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Eine Zusage, die mit einem ArrayBufferaufgelöst wird, der einen generischen binären Rohdatenpuffer darstellt. |
| Ausnahme | Beschreibung |
|---|---|
| DOMException: AbortError | Eine Ausnahme, die angibt, dass die Anforderung abgebrochen wurde. |
| TypeFehler | Wird aus einem der folgenden Gründe ausgelöst:
|
| Bereichsfehler | Beim Erstellen des zugeordneten ArrayBufferist ein Problem aufgetreten. Zum Beispiel, wenn die Daten zu groß sind. |
- fetch(): Ruft eine Ressource von der angegebenen URL ab.
- response.ok: Überprüft, ob der Antwortstatus im Bereich von 200 bis 299 liegt.
- arrayBuffer(): Liest den Antworttext und konvertiert ihn in einen ArrayBuffer, der einen generischen Rohbinärdatenpuffer mit fester Länge darstellt.
- Uint8Array: Konvertiert den ArrayBuffer in ein Uint8Array, ein typisiertes Array zur einfachen Bearbeitung von Binärdaten.
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);
});Antwort abrufen – blob()
Gibt eine Zusage zurück, die mit einem Blob aufgelöst wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Ein Prompt, das mit einem Blobaufgelöst wird. |
| Ausnahme | Beschreibung |
|---|---|
| DOMException: AbortError | Eine Ausnahme, die angibt, dass die Anforderung abgebrochen wurde. |
| TypeFehler | Wird aus einem der folgenden Gründe ausgelöst:
|
- fetch(url): Ruft eine Ressource von der angegebenen URL ab.
- response.blob(): Konvertiert den Antworttext in ein Blob-Objekt, das Binärdaten darstellt.
- URL.createObjectURL(blob): Generiert eine temporäre URL für den Blob, die im DOM verwendet werden kann (z. B. als Bildquelle).
- Bild an DOM anhängen: Erstellt ein Bildelement dynamisch, legt die Blob-URL als Quelle fest und hängt es an den Dokumenttext an.
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);
Antwort abrufen – bytes()
Gibt eine Zusage zurück, die mit einem Uint8Array aufgelöst wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Ein Promise, das mit einem Uint8Array aufgelöst wird. |
| Ausnahme | Beschreibung |
|---|---|
| DOMException: AbortError | Die Anforderung wurde abgebrochen. |
| TypeFehler | Wird aus einem der folgenden Gründe ausgelöst:
|
| Bereichsfehler | Beim Erstellen des zugeordneten ArrayBufferist ein Problem aufgetreten. Zum Beispiel, wenn die Daten zu groß sind. |
Das folgende Beispiel zeigt, wie Sie eine Textdatei abrufen, den Textkörper als Uint8Array zurückgeben und ihn dann in eine Zeichenfolge decodieren.
const response = await fetch("https://www.example.com/textfile.txt");
const textFile = await response.bytes();
const string = new TextDecoder().decode(textFile);
console.log(string);
Antwort abrufen – formData()
Gibt eine Zusage zurück, die mit einem FormData-Objekt aufgelöst wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Ein Prompt, das mit einem FormData- Objekt aufgelöst wird. |
| Ausnahme | Beschreibung |
|---|---|
| DOMException: AbortError | Die Anforderung wurde abgebrochen. |
| TypeFehler | Wird aus einem der folgenden Gründe ausgelöst:
|
- Anforderungstext:
JSON.stringify()verwendet, um die Formulardaten als JSON anstelle von URL-codierten Parametern zu senden. - Inhaltstyp: Auf
„application/json“festlegen, um das Format des Anforderungstexts anzugeben.
// 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);
Ausgabe:
name: John Doe
email: john.doe@example.com
Antwort abrufen – json()
Gibt ein Prompt zurück, das in das Ergebnis der Analyse des Textkörpers als JSON aufgelöst wird.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Ein Prompt, das in ein JavaScript-Objekt aufgelöst wird. Dieses Objekt kann alles sein, was von JSON dargestellt werden kann, z. B. ein Objekt, ein Array, eine Zeichenfolge, eine Zahl usw. |
| Ausnahme | Beschreibung |
|---|---|
| DOMException: AbortError | Die Anforderung wurde abgebrochen. |
| TypeFehler | Wird aus einem der folgenden Gründe ausgelöst:
|
| Syntaxfehler | Der Antworttext kann nicht als JSON analysiert werden. |
- fetch() sendet eine GET-Anforderung an die URL.
- response.ok prüft, ob die Anforderung erfolgreich war (Statuscode 200–299).
- Bei Erfolg wird response.json() aufgerufen, um die JSON-Daten aus der Antwort zu analysieren.
- Die analysierten Daten werden mithilfe der Konsolen -API in Systemprotokollen protokolliert. Wenn während der Anforderung oder Analyse ein Fehler auftritt, wird er erfasst und protokolliert.
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));
Antwort abrufen – text()
Liest den Antworttext und gibt ihn als einfache Zeichenfolge zurück. Die Antwort wird immer mit UTF-8 decodiert.
Die text() -Methode ist nützlich für Antworten, die Textdaten wie HTML, JSON (bei manueller Bearbeitung), XML oder Nur-Text-Dateien enthalten, die als einfache Zeichenfolgen behandelt werden sollen.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Keine | Ein Prompt, das mit einer UTF-8-codierten Zeichenfolge aufgelöst wird. |
| Ausnahme | Beschreibung |
|---|---|
| DOMException: AbortError | Die Anforderung wurde abgebrochen. |
| TypeFehler | Wird aus einem der folgenden Gründe ausgelöst:
|
Das folgende Beispiel zeigt eine einfache Möglichkeit, text() zu verwenden, wenn der Server Nur-Text zurückgibt, z. B. Hello, World! Dies ist eine Beispielantwort.
const response = awaitfetch('https://example.com/text-endpoint');
const text = await response.text();
console.log(text); // Outputs: Hello, world! This is a sample response.
Ausgabe:
Hello, world! This is a sample response.