


XML Http Demander la dernière technologie alternative - Récupérer
Dans les applications Web, JavaScript utilise XMLHttpRequest (XHR) pour effectuer des requêtes asynchrones, qui est une technologie qui améliore efficacement la communication des pages. Lorsque nous parlons de technologie Ajax, nous entendons généralement Ajax basé sur XMLHttpRequest. Bien que Ajax est utile, mais ce n'est pas la meilleure API. Elle n'est pas conçue pour adhérer au principe de séparation des tâches, mélangeant les entrées, les sorties et l'état suivi avec les événements dans un seul objet. De plus, les modèles basés sur les événements sont désormais JavaScript est en contradiction avec ses modèles de programmation asynchrone populaires basés sur Promise et générateur. Cet article présentera la dernière technologie alternative à XMLHttpRequest—— Fetch API, qui est une norme officielle du W3C.
Compatibilité
Avant de présenter, jetons un coup d'œil à la prise en charge actuelle des navigateurs grand public pour l'API Fetch :
Support de récupération Il est toujours présent les premiers stades, dans Firefox 39 et supérieur, et Chrome 42 Tous les éléments ci-dessus sont pris en charge.
Si vous souhaitez l'utiliser maintenant, vous pouvez également utiliser Fetch Polyfil pour soutenir ceux qui ne prennent pas encore en charge Fetch navigateur.
Avant d'utiliser Fetch, vous pouvez également effectuer des tests fonctionnels dessus :
if(self.fetch) { // run my fetch request here } else { // do something with XMLHttpRequest? }
Exemple de récupération simple
Dans l'API Fetch, la fonction la plus couramment utilisée est la fonction fetch(). Il reçoit un paramètre URL et renvoie un promettez de gérer la réponse. réponse est un objet Response :
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); });
fetch() accepte un deuxième paramètre facultatif, un objet init qui peut contrôler différentes configurations. Si vous soumettez un Requête POST, le code est le suivant :
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!"); });
S'il y a une panne de réseau, la promesse fetch() sera rejetée, avec un Objet TypeError. Pour déterminer avec précision si fetch() réussit, vous devez inclure la situation résolue par la promesse, puis déterminer Response.ok à ce moment-là est vrai.
Fetch implémente quatre interfaces : GlobalFetch, Headers, Request et Réponse. GloabaFetch ne contient qu'une seule méthode de récupération pour obtenir des ressources réseau, et les trois autres correspondent directement aux concepts HTTP correspondants. De plus, dans En requête/réponse, Body est également confus.
En-têtes
L'interface des en-têtes permet de définir HTTP En-têtes de requête (Request.headers) et en-têtes de réponse (Response.headers). Un objet Headers est une simple paire de valeurs multi-noms :
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");
Vous pouvez également transmettre un tableau multidimensionnel ou un littéral d'objet :
myHeaders = new Headers({ "Content-Type": "text/plain", "Content-Length": content.length.toString(), "X-Custom-Header": "ProcessThisImmediately", });
De plus, l'interface Headers fournit des API de définition, de suppression et autres. Utilisé pour récupérer son contenu :
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")); // []
Bien que certaines opérations ne soient utilisées qu'au sein des ServiceWorkers, elles sont relativement XHR lui-même fournit une API très pratique pour exploiter les en-têtes.
Pour des raisons de sécurité, certains champs d'en-tête ne peuvent être définis que via l'agent utilisateur Implémentation, ne peut pas être définie par programme : champ interdit d'en-tête de demande et champ interdit d'en-tête de réponse.
Si un nom d'attribut d'en-tête HTTP illégal est utilisé ou si un attribut non inscriptible est écrit, les en-têtes Les méthodes génèrent généralement des exceptions TypeError :
var myResponse = Response.error(); try { myResponse.headers.set("Origin", "http://mybank.com"); } catch(e) { console.log("Cannot pretend to be a bank!"); }
La meilleure pratique consiste à vérifier si le type de contenu est correct avant de l'utiliser, par exemple :
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!"); } });
Puisque les en-têtes peuvent être utilisés dans le demande demande Envoyer ou en réponse Reçu dans la requête et précisant quels paramètres sont accessibles en écriture, l'objet Headers possède un attribut de garde spécial. Cette propriété n'est pas exposée au Web, mais elle affecte le contenu qui peut être L'objet en-têtes est modifié.
Les valeurs possibles sont les suivantes :
aucun : Par défaut
r
equest:从 request 中获得的 headers(Request.headers)只读 request-no-cors:从不同域(Request.mode no-cors)的 request 中获得的 headers 只读 response:从 response 中获得的 headers(Response.headers)只读 immutable:在 ServiceWorkers 中最常用的,所有的 headers 都只读
Demande
Demande L'interface définit le format de requête pour demander des ressources via HTTP. Une requête simple est construite comme suit :
var req = new Request("/index.html"); console.log(req.method); // "GET" console.log(req.url); // "http://example.com/index.html" console.log(req.headers); //请求头
Identique à fetch(), Request accepte un deuxième paramètre facultatif, un init qui peut contrôler différentes configurations. Objet :
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; });
L'attribut mode est utilisé pour déterminer si les requêtes inter-domaines sont autorisées et quels attributs de réponse sont lisibles. mode Valeurs d'attribut facultatives :
same-origin : la requête suit la politique de même origine
no-cors : valeur par défaut, autorisant les scripts du CDN, les images d'autres domaines et d'autres ressources inter-domaines (La condition préalable est la méthode ne peut être que HEAD, GET ou POST)
cors : le cross-domain est autorisé, la requête suit le protocole CROS
l'attribut d'énumération des informations d'identification détermine si les cookies peuvent être obtenus à travers les domaines, ce qui est conforme à XHR L'indicateur withCredentials est le même, mais n'a que trois valeurs, à savoir omettre (par défaut), même origine et inclure.
Réponse
L'instance de réponse est après que fentch() gère les promesses Les instances renvoyées ultérieurement peuvent également être créées via JavaScript, mais ne sont vraiment utiles qu'au sein de ServiceWorkers. Lors de l'utilisation deresponsWith() et fournit une réponse personnalisée pour accepter la requête :
var myBody = new Blob(); addEventListener('fetch', function(event) { event.respondWith(new Response(myBody, { headers: { "Content-Type" : "text/plain" } }); });
Le constructeur Response() accepte deux paramètres facultatifs : le corps des données de réponse et un objet Initialize (avec Les paramètres d'initialisation acceptés par Request() sont similaires.)
Les attributs de réponse les plus courants sont :
Response.status — 整数(默认值为200) 为response的状态码. Response.statusText — 字符串(默认值为OK),该值与HTTP状态码消息对应. Response.ok — 如上所示, 该属性是来检查response的状态是否在200-299(包括200,299)这个范围内.该属性返回一个Boolean值. Response.headers — 响应头 Response.type — 响应类型,如:basic/ cors /error
Body
Request et Response implémentent l'interface Body. Pendant le processus de demande, les deux porteront Corps, qui peut être une instance de l'un des types suivants :
ArrayBuffer ArrayBufferView Blob/file URLSearchParams FormData
此外,Request 和 Response 都为他们的body提供了以下方法,这些方法都返回一个Promise对象:
arrayBuffer() blob() json() text() formData()
以上就是XML Http Request最新替代技术—— Fetch 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les fichiers XML peuvent-ils être ouverts avec PPT ? XML, Extensible Markup Language (Extensible Markup Language), est un langage de balisage universel largement utilisé dans l'échange et le stockage de données. Comparé au HTML, XML est plus flexible et peut définir ses propres balises et structures de données, rendant le stockage et l'échange de données plus pratiques et unifiés. PPT, ou PowerPoint, est un logiciel développé par Microsoft pour créer des présentations. Il fournit un moyen complet de

Utilisation de Python pour fusionner et dédupliquer des données XML XML (eXtensibleMarkupLanguage) est un langage de balisage utilisé pour stocker et transmettre des données. Lors du traitement de données XML, nous devons parfois fusionner plusieurs fichiers XML en un seul ou supprimer les données en double. Cet article explique comment utiliser Python pour implémenter la fusion et la déduplication de données XML, et donne des exemples de code correspondants. 1. Fusion de données XML Lorsque nous avons plusieurs fichiers XML, nous devons les fusionner

Convertir des données XML en Python au format CSV XML (ExtensibleMarkupLanguage) est un langage de balisage extensible couramment utilisé pour le stockage et la transmission de données. CSV (CommaSeparatedValues) est un format de fichier texte délimité par des virgules couramment utilisé pour l'importation et l'exportation de données. Lors du traitement des données, il est parfois nécessaire de convertir les données XML au format CSV pour faciliter l'analyse et le traitement. Python est un puissant

Implémentation du filtrage et du tri des données XML à l'aide de Python Introduction : XML est un format d'échange de données couramment utilisé qui stocke les données sous forme de balises et d'attributs. Lors du traitement de données XML, nous devons souvent filtrer et trier les données. Python fournit de nombreux outils et bibliothèques utiles pour traiter les données XML. Cet article explique comment utiliser Python pour filtrer et trier les données XML. Lecture du fichier XML Avant de commencer, nous devons lire le fichier XML. Python possède de nombreuses bibliothèques de traitement XML,

Python implémente la conversion entre XML et JSON Introduction : Dans le processus de développement quotidien, nous devons souvent convertir des données entre différents formats. XML et JSON sont des formats d'échange de données courants. En Python, nous pouvons utiliser diverses bibliothèques pour réaliser une conversion mutuelle entre XML et JSON. Cet article présentera plusieurs méthodes couramment utilisées, avec des exemples de code. 1. Pour convertir XML en JSON en Python, nous pouvons utiliser le module xml.etree.ElementTree

Gestion des erreurs et des exceptions dans XML à l'aide de Python XML est un format de données couramment utilisé pour stocker et représenter des données structurées. Lorsque nous utilisons Python pour traiter XML, nous pouvons parfois rencontrer des erreurs et des exceptions. Dans cet article, je vais vous présenter comment utiliser Python pour gérer les erreurs et les exceptions dans XML, et fournir un exemple de code pour référence. Utilisez l'instruction try-sauf pour détecter les erreurs d'analyse XML Lorsque nous utilisons Python pour analyser XML, nous pouvons parfois rencontrer des

Python analyse les caractères spéciaux et les séquences d'échappement en XML XML (eXtensibleMarkupLanguage) est un format d'échange de données couramment utilisé pour transférer et stocker des données entre différents systèmes. Lors du traitement de fichiers XML, vous rencontrez souvent des situations contenant des caractères spéciaux et des séquences d'échappement, qui peuvent provoquer des erreurs d'analyse ou une mauvaise interprétation des données. Par conséquent, lors de l’analyse de fichiers XML à l’aide de Python, nous devons comprendre comment gérer ces caractères spéciaux et ces séquences d’échappement. 1. Caractères spéciaux et

La gestion des formats de données XML et JSON dans le développement C# nécessite des exemples de code spécifiques. Dans le développement de logiciels modernes, XML et JSON sont deux formats de données largement utilisés. XML (Extensible Markup Language) est un langage de balisage permettant de stocker et de transmettre des données, tandis que JSON (JavaScript Object Notation) est un format d'échange de données léger. Dans le développement C#, nous devons souvent traiter et exploiter des données XML et JSON. Cet article se concentrera sur la façon d'utiliser C# pour traiter ces deux formats de données et les attacher.
