Heim Backend-Entwicklung XML/RSS-Tutorial XML Http Fordern Sie die neueste alternative Technologie an – Fetch

XML Http Fordern Sie die neueste alternative Technologie an – Fetch

Feb 25, 2017 pm 01:58 PM
request xml

In Webanwendungen verwendet JavaScript XMLHttpRequest (XHR) zur Durchführung asynchroner Anfragen, einer Technologie, die die Seitenkommunikation effektiv verbessert. Wenn wir über Ajax-Technologie sprechen, meinen wir normalerweise Ajax basierend auf XMLHttpRequest. Obwohl Ajax ist nützlich, aber nicht die beste API. Es ist nicht darauf ausgelegt, das Prinzip der Aufgabentrennung einzuhalten, bei dem Eingabe, Ausgabe und mit Ereignissen verfolgte Zustände in einem einzigen Objekt zusammengefasst werden. Darüber hinaus gibt es mittlerweile ereignisbasierte Modelle JavaScript steht im Widerspruch zu seinen beliebten Promise- und Generator-basierten asynchronen Programmiermodellen. In diesem Artikel wird die neueste alternative Technologie zu XMLHttpRequest vorgestellt. Fetch API, ein offizieller Standard des W3C.

Kompatibilität

Bevor wir es vorstellen, werfen wir einen Blick auf die aktuelle Mainstream-Browser-Unterstützung für die Fetch-API:

XML Http Fordern Sie die neueste alternative Technologie an – Fetch

Fetch-Unterstützung Es ist noch verfügbar die frühen Stadien, in Firefox 39 und höher und Chrome 42 Alle oben genannten werden unterstützt.


Wenn Sie es jetzt nutzen möchten, können Sie Fetch Polyfil auch verwenden, um diejenigen zu unterstützen, die Fetch noch nicht unterstützen Browser.


Bevor Sie Fetch verwenden, können Sie auch Funktionstests durchführen:

if(self.fetch) {
    // run my fetch request here
} else {
    // do something with 
XMLHttpRequest?
}
Nach dem Login kopieren

Einfaches Abrufbeispiel


In der Fetch-API ist die Funktion fetch() die am häufigsten verwendete Funktion. Es empfängt einen URL-Parameter und gibt einen zurück versprechen, die Antwort zu bearbeiten. Antwort ist ein Antwortobjekt:

fetch("/data.json").then(function(res) 
{
  // res instanceof Response == 
true.
  if (res.ok) {
    res.json().then(function(data) {
      console.log(data.entries);
    });
  } else {
    console.log("Looks like the response wasn't 
perfect, got status", res.status);
  }
}, function(e) {
  console.log("Fetch failed!", e);
});
Nach dem Login kopieren


fetch() akzeptiert einen zweiten optionalen Parameter, ein Init-Objekt, das verschiedene Konfigurationen steuern kann. Wenn Sie eine einreichen POST-Anfrage, der Code lautet wie folgt:

fetch("http://www.example.org/submit.php", 
{
  method: "POST",
  headers: {
    "Content-Type": 
"application/x-www-form-urlencoded"
  },
  body: 
"firstName=Nikhil&favColor=blue&password=easytoguess"
}).then(function(res) {
  if (res.ok) {
    //res.ok用于检测请求是否成功
    console.log("Perfect! Your settings are 
saved.");
  } else if (res.status == 401) {
    console.log("Oops! You are not 
authorized.");
  }
}, function(e) {
  console.log("Error submitting 
form!");
});
Nach dem Login kopieren

Wenn ein Netzwerkfehler vorliegt, wird das fetch()-Versprechen mit a abgelehnt TypeError-Objekt. Um genau zu bestimmen, ob fetch() erfolgreich ist, müssen Sie die gelöste Versprechenssituation einbeziehen und dann Response.ok zu diesem Zeitpunkt ermitteln ist wahr.


Fetch implementiert vier Schnittstellen: GlobalFetch, Headers, Request und Antwort. GloabaFetch enthält nur eine Abrufmethode zum Abrufen von Netzwerkressourcen, und die anderen drei entsprechen direkt den entsprechenden HTTP-Konzepten. Darüber hinaus in Bei Anfrage/Antwort ist Body ebenfalls verwirrt.

Header

Header-Schnittstelle ermöglicht die Definition von HTTP Anforderungsheader (Request.headers) und Antwortheader (Response.headers). Ein Headers-Objekt ist ein einfaches Wertepaar mit mehreren Namen:

var content = "Hello World";
var myHeaders = new Headers();
myHeaders.append("Content-Type", 
"text/plain");
myHeaders.append("Content-Length", 
content.length.toString());
myHeaders.append("X-Custom-Header", 
"ProcessThisImmediately");
Nach dem Login kopieren


Sie können auch ein mehrdimensionales Array oder Objektliteral übergeben:

myHeaders = new Headers({
  "Content-Type": "text/plain",
  "Content-Length": 
content.length.toString(),
  "X-Custom-Header": 
"ProcessThisImmediately",
});
Nach dem Login kopieren

Darüber hinaus bietet die Headers-Schnittstelle Set-, Lösch- und andere APIs Wird zum Abrufen des Inhalts verwendet:

console.log(reqHeaders.has("Content-Type")); // 
true
console.log(reqHeaders.has("Set-Cookie")); // 
false
reqHeaders.set("Content-Type", 
"text/html");
reqHeaders.append("X-Custom-Header", 
"AnotherValue");
console.log(reqHeaders.get("Content-Length")); 
// 11
console.log(reqHeaders.getAll("X-Custom-Header")); // 
["ProcessThisImmediately", "AnotherValue"]
reqHeaders.delete("X-Custom-Header");
console.log(reqHeaders.getAll("X-Custom-Header")); // 
[]
Nach dem Login kopieren


Während einige Vorgänge nur innerhalb von ServiceWorkers verwendet werden, sind sie relativ XHR selbst bietet eine sehr praktische API zum Betrieb von Headern.


Aus Sicherheitsgründen können einige Header-Felder nur über den User Agent festgelegt werden Implementierung, kann nicht programmgesteuert festgelegt werden: Anforderungsheader-verbotenes Feld und Antwortheader-verbotenes Feld.


Wenn ein unzulässiger HTTP-Header-Attributname verwendet oder ein nicht beschreibbares Attribut geschrieben wird, Header Methoden lösen normalerweise TypeError-Ausnahmen aus:

var myResponse = Response.error();
try {
  myResponse.headers.set("Origin", 
"http://mybank.com");
} catch(e) {
  console.log("Cannot pretend to be a 
bank!");
}
Nach dem Login kopieren

Die beste Vorgehensweise besteht darin, vor der Verwendung zu überprüfen, ob der Inhaltstyp korrekt ist, wie zum Beispiel:

fetch(myRequest).then(function(response) 
{
  if(response.headers.get("content-type") === 
"application/json") {
    return response.json().then(function(json) 
{
      // process your JSON further
    });
  } else {
    console.log("Oops, we haven't got 
JSON!");
  }
});
Nach dem Login kopieren

Da Header in der Anfrage verwendet werden können Anfrage senden oder als Antwort Das Headers-Objekt wird in der Anfrage empfangen und gibt an, welche Parameter beschreibbar sind. Es verfügt über ein spezielles Schutzattribut. Diese Eigenschaft ist nicht im Web verfügbar, sie beeinflusst jedoch, welche Inhalte vorhanden sein können Das Header-Objekt wurde geändert.


Mögliche Werte sind wie folgt:


keine: Standard

r

equest:从 request 中获得的 
headers(Request.headers)只读
request-no-cors:从不同域(Request.mode no-cors)的 
request 中获得的 headers 只读
response:从 response 中获得的 
headers(Response.headers)只读
immutable:在 ServiceWorkers 中最常用的,所有的 headers 
都只读
Nach dem Login kopieren


Anfrage


Anfrage Die Schnittstelle definiert das Anforderungsformat zum Anfordern von Ressourcen über HTTP. Eine einfache Anforderung ist wie folgt aufgebaut:

var req = new 
Request("/index.html");
console.log(req.method); // "GET"
console.log(req.url); // 
"http://example.com/index.html"
console.log(req.headers); 
//请求头
Nach dem Login kopieren

Wie fetch() akzeptiert Request einen zweiten optionalen Parameter, einen Init, der verschiedene Konfigurationen steuern kann Objekt:

var myHeaders = new Headers();
var myInit = { method: 'GET',
               headers: myHeaders,
               mode: 'cors',
               cache: 'default' ,
               credentials: true,
               body: "image data"};
var myRequest = new 
Request('flowers.jpg',myInit);
fetch(myRequest,myInit)
.then(function(response) {
  return response.blob();
})
.then(function(myBlob) {
  var objectURL = 
URL.createObjectURL(myBlob);
  myImage.src = objectURL;
});
Nach dem Login kopieren


Das Modusattribut wird verwendet, um zu bestimmen, ob domänenübergreifende Anfragen zulässig sind und welche Antwortattribute lesbar sind. Modus Optionale Attributwerte:

same-origin: Die Anfrage folgt der Same-origin-Richtlinie

no-cors: Standardwert, der Skripte von CDN, Bilder von anderen Domänen und andere domänenübergreifende Ressourcen zulässt (Voraussetzung ist Methode kann nur HEAD, GET oder POST sein)

cors: domänenübergreifend ist zulässig, die Anfrage folgt dem CROS-Protokoll

Credentials-Aufzählungsattribut bestimmt, ob Cookies domänenübergreifend abgerufen werden können im Einklang mit XHR Das withCredentials-Flag ist dasselbe, hat aber nur drei Werte, nämlich omit (Standard), same-origin und include.

Antwort

Antwortinstanz ist, nachdem fentch() Versprechen verarbeitet Später zurückgegebene Instanzen davon können auch über JavaScript erstellt werden, sind aber nur innerhalb von ServiceWorkers wirklich nützlich. Bei Verwendung vonrespondWith() -Methode und stellt eine benutzerdefinierte Antwort zum Akzeptieren der Anfrage bereit:

 var myBody = new Blob();
addEventListener('fetch', function(event) 
{
  event.respondWith(new Response(myBody, 
{
    headers: { "Content-Type" : "text/plain" 
}
  });
});
Nach dem Login kopieren


Der Response()-Konstruktor akzeptiert zwei optionale Parameter – den Antwortdatenkörper und ein Initialize-Objekt (mit Die von Request() akzeptierten Init-Parameter sind ähnlich.)

Die häufigsten Antwortattribute sind:

Response.status — 整数(默认值为200) 
为response的状态码.
Response.statusText — 
字符串(默认值为OK),该值与HTTP状态码消息对应.
Response.ok — 如上所示, 
该属性是来检查response的状态是否在200-299(包括200,299)这个范围内.该属性返回一个Boolean值.
Response.headers — 响应头
Response.type — 响应类型,如:basic/ cors 
/error
Nach dem Login kopieren

Body

Sowohl Request als auch Response implementieren die Body-Schnittstelle. Während des Anfragevorgangs werden beide übertragen Körper, der eine Instanz eines der folgenden Typen sein kann:

ArrayBuffer
ArrayBufferView
Blob/file
URLSearchParams
FormData
Nach dem Login kopieren

此外,Request 和 Response 都为他们的body提供了以下方法,这些方法都返回一个Promise对象:

arrayBuffer()
blob()
json()
text()
formData()
Nach dem Login kopieren


 以上就是XML Http Request最新替代技术—— Fetch 的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kann ich eine XML-Datei mit PowerPoint öffnen? Kann ich eine XML-Datei mit PowerPoint öffnen? Feb 19, 2024 pm 09:06 PM

Können XML-Dateien mit PPT geöffnet werden? XML, Extensible Markup Language (Extensible Markup Language), ist eine universelle Auszeichnungssprache, die häufig im Datenaustausch und in der Datenspeicherung verwendet wird. Im Vergleich zu HTML ist XML flexibler und kann eigene Tags und Datenstrukturen definieren, wodurch die Speicherung und der Austausch von Daten komfortabler und einheitlicher werden. PPT oder PowerPoint ist eine von Microsoft entwickelte Software zum Erstellen von Präsentationen. Es bietet eine umfassende Möglichkeit

Verwendung von Python zum Zusammenführen und Deduplizieren von XML-Daten Verwendung von Python zum Zusammenführen und Deduplizieren von XML-Daten Aug 07, 2023 am 11:33 AM

Verwenden von Python zum Zusammenführen und Deduplizieren von XML-Daten XML (eXtensibleMarkupLanguage) ist eine Auszeichnungssprache, die zum Speichern und Übertragen von Daten verwendet wird. Bei der Verarbeitung von XML-Daten müssen wir manchmal mehrere XML-Dateien zu einer zusammenführen oder doppelte Daten entfernen. In diesem Artikel wird erläutert, wie Sie mit Python die Zusammenführung und Deduplizierung von XML-Daten implementieren und entsprechende Codebeispiele angeben. 1. XML-Daten zusammenführen Wenn wir mehrere XML-Dateien haben, müssen wir sie zusammenführen

Konvertieren Sie XML-Daten in Python in das CSV-Format Konvertieren Sie XML-Daten in Python in das CSV-Format Aug 11, 2023 pm 07:41 PM

Konvertieren Sie XML-Daten in Python in das CSV-Format. XML (ExtensibleMarkupLanguage) ist eine erweiterbare Auszeichnungssprache, die häufig zur Datenspeicherung und -übertragung verwendet wird. CSV (CommaSeparatedValues) ist ein durch Kommas getrenntes Textdateiformat, das häufig für den Datenimport und -export verwendet wird. Bei der Datenverarbeitung ist es manchmal erforderlich, XML-Daten zur einfachen Analyse und Verarbeitung in das CSV-Format zu konvertieren. Python ist mächtig

XML-Daten mit Python filtern und sortieren XML-Daten mit Python filtern und sortieren Aug 07, 2023 pm 04:17 PM

Implementieren des Filterns und Sortierens von XML-Daten mit Python Einführung: XML ist ein häufig verwendetes Datenaustauschformat, das Daten in Form von Tags und Attributen speichert. Bei der Verarbeitung von XML-Daten müssen wir die Daten häufig filtern und sortieren. Python bietet viele nützliche Tools und Bibliotheken zum Verarbeiten von XML-Daten. In diesem Artikel wird erläutert, wie Sie mit Python XML-Daten filtern und sortieren. Lesen der XML-Datei Bevor wir beginnen, müssen wir die XML-Datei lesen. Python verfügt über viele XML-Verarbeitungsbibliotheken.

Python implementiert die Konvertierung zwischen XML und JSON Python implementiert die Konvertierung zwischen XML und JSON Aug 07, 2023 pm 07:10 PM

Python implementiert die Konvertierung zwischen XML und JSON. Einführung: Im täglichen Entwicklungsprozess müssen wir häufig Daten zwischen verschiedenen Formaten konvertieren. XML und JSON sind gängige Datenaustauschformate. In Python können wir verschiedene Bibliotheken zum Konvertieren zwischen XML und JSON verwenden. In diesem Artikel werden mehrere häufig verwendete Methoden mit Codebeispielen vorgestellt. 1. Um XML in Python in JSON zu konvertieren, können wir das Modul xml.etree.ElementTree verwenden

Behandeln von Fehlern und Ausnahmen in XML mit Python Behandeln von Fehlern und Ausnahmen in XML mit Python Aug 08, 2023 pm 12:25 PM

Behandeln von Fehlern und Ausnahmen in XML mit Python XML ist ein häufig verwendetes Datenformat zum Speichern und Darstellen strukturierter Daten. Wenn wir Python zum Verarbeiten von XML verwenden, können manchmal Fehler und Ausnahmen auftreten. In diesem Artikel werde ich die Verwendung von Python zur Behandlung von Fehlern und Ausnahmen in XML vorstellen und einige Beispielcodes als Referenz bereitstellen. Verwenden Sie Try-Exception-Anweisungen, um XML-Parsing-Fehler abzufangen. Wenn wir Python zum Parsen von XML verwenden, können manchmal Fehler auftreten

Python analysiert Sonderzeichen und Escape-Sequenzen in XML Python analysiert Sonderzeichen und Escape-Sequenzen in XML Aug 08, 2023 pm 12:46 PM

Python analysiert Sonderzeichen und Escape-Sequenzen in XML. XML (eXtensibleMarkupLanguage) ist ein häufig verwendetes Datenaustauschformat, das zum Übertragen und Speichern von Daten zwischen verschiedenen Systemen verwendet wird. Bei der Verarbeitung von XML-Dateien kommt es häufig vor, dass Sonderzeichen und Escape-Sequenzen enthalten sind, die zu Analysefehlern oder einer Fehlinterpretation der Daten führen können. Daher müssen wir beim Parsen von XML-Dateien mit Python verstehen, wie mit diesen Sonderzeichen und Escape-Sequenzen umgegangen wird. 1. Sonderzeichen und

Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung Oct 09, 2023 pm 06:15 PM

Für den Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung sind spezifische Codebeispiele erforderlich. In der modernen Softwareentwicklung sind XML und JSON zwei weit verbreitete Datenformate. XML (Extensible Markup Language) ist eine Auszeichnungssprache zum Speichern und Übertragen von Daten, während JSON (JavaScript Object Notation) ein leichtes Datenaustauschformat ist. Bei der C#-Entwicklung müssen wir häufig XML- und JSON-Daten verarbeiten und verarbeiten. Dieser Artikel konzentriert sich auf die Verwendung von C# zum Verarbeiten und Anhängen dieser beiden Datenformate

See all articles