Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 24777|Antwort: 3

[WebAPI] WebAPI passt das Rückgabedatenformat an

[Link kopieren]
Veröffentlicht am 30.11.2017 11:00:16 | | | |
Kürzlich greift der Browser beim Einsatz von WebAPI auf die WebAPI zu, und standardmäßig ist das XML-Format. Ich denke, dieses zurückgegebene Datenformat sollte vom Benutzer anpassbar sein, sodass der Server XML- oder JSON-Format zurückgeben kann, anstatt dass Servercode konfiguriert werden muss!



Obwohl der Servercode konfiguriert werden kann, glaube ich nicht, dass das die ursprüngliche Absicht von WebAPI war.

1. Welchen Datentyp gibt WebAPI standardmäßig zurück, JSON oder XML?
2. Wie man den Rückgabedatentyp von WebAPI ändert
Ich benutze den IE-Browser, um zu verlangen, dass die zurückgegebenen Daten im JSON-Format sind, und das von Firefox und Chrome zurückgegebene Datenformat XML ist, und dann verwende ich HttpWebRequest, um zu verlangen, dass die Rückgabe im JSON-Format ist. Ich habe mich gefragt, warum das gleiche Programm, dieselbe Konfigurationsdatei ist, warum das Ausgabeformat unterschiedlich ist, selbst wenn man das Standard-Ausgabe-JSON oder XML verstehen kann, warum gibt es verschiedene Browser, das Ausgabeformat ist unterschiedlich. Nach einiger Recherche habe ich schließlich den Grund herausgefunden

Nach Tests stellte sich heraus, dass die vom IE-Browser zurückgegebenen Daten JSON sind, während Firefox und Chrome XML sind, und es stellt sich heraus, dass IE bei HTTP-Anfragen nicht den Typ "application/xml" besitzt. Standardmäßig sind also JSON-Format-Daten, während Firefox und Chrome akzeptable XML-Typen senden, sodass XML-Daten zurückgegeben werden, und im Folgenden der Anfrage-Header von IE, Firefox und Chrome


Annehmen erscheint nur in Anfragen

Was es bedeutet: Die Art von Medien, die auf der Browserseite akzeptabel sind


Zum Beispiel bedeutet Accept: text/html, dass der Browser die Art des Postbacks vom Server als Text/HTML akzeptieren kann, was üblicherweise als HTML-Dokumente bezeichnet wird

Wenn der Server keine Daten vom Typ text/html zurückgeben kann, sollte er einen 406-Fehler (nicht akzeptabel) zurückgeben.

Wildcard * steht für jeden Typ

Zum Beispiel bedeutet Akzeptanz: */*, dass der Browser alle Typen verarbeiten kann (in der Regel sendet der Browser diese an den Server)

Zum Beispiel bedeutet Accept: text/*, dass alle Unterklassen von Text akzeptabel sind

Accept kann mehrere Arten von Trennungen unterstützen

Zum Beispiel: Akzeptieren: audio/*; q=0.2, audio/basic bedeutet, dass Browser Audio/BASIC-Medientypen bevorzugen, aber wenn sie diesen Typ nicht haben, können auch andere Audiotypen verwendet werden

Hier erscheint ein q=0,2, ein Wert, der den Grad der Assoziation repräsentiert, und der Standardwert ist eins, von größte zu kleinste geordnet

Zum Beispiel: Akzeptieren: Text/Plain; q=0,5, text/html, text/x-dvi; q=0,8, text/x-c

Die akzeptablen Typenprioritäten sind wie folgt

1) Text/HTML Text/X-C

2) Text/X-DVI

3) Text/Klartext

q ist ein Wert zwischen 0 und 1, der Standardwert von q ist 1, und q=0 bedeutet nicht akzeptabel



Abschließend die Testergebnisse:

BrowserZurück zur Formatierung  Anforderungs-Header
ieJSONtext/html, application/xhtml+xml, */*
ChromeXMLtext/html,application/xhtml+xml,application/xml; q=0.9,Bild/webp,bild/apng,*/*; q=0,8
FirefoxXMLtext/html,application/xhtml+xml,application/xml; q=0,9,*/*; q=0,8,*/*



Fahren Sie mit den folgenden Tests fort

1. Es wird nur akzeptiert:application/json gesendet, und das Ergebnis wird als json zurückgegeben

2. Es wird nur accept:application/xml gesendet, und das Ergebnis gibt xml zurück

3. Send accept: application/xml und application/json gleichzeitig, und das Ergebnis gibt json zurück

4. Senden Sie accept:application/json und application/xml gleichzeitig, und das Ergebnis gibt json zurück

5. Ändern Sie die Priorität und senden Sie gleichzeitig die Anwendung/XML. q=1.0,application/json; q=0,9, und das Ergebnis ergab XML zurück

Daraus lässt sich schließen:

Der Rückgabedatentyp von WebAPI wird durch das Akzeptieren des Anforderungskopfes bestimmt, und der Standardrückgabetyp ist json
1. Wenn weder application/json noch application/xml existieren, gib die json-Daten zurück
2. Wenn nur Anwendungs/JSON verfügbar ist, geben Sie die JSON-Daten zurück
3. Wenn nur Anwendungs-/XML-Daten verfügbar sind, werden die XML-Daten zurückgegeben
4. Wenn application/json und application/json gleichzeitig vorhanden sind, ist der zurückgegebene Datentyp für die Reihenfolge der beiden irrelevant; wenn die beiden die gleiche Priorität haben, wird json zurückgegeben, und wenn die Priorität unterschiedlich ist, wird der Typ mit höherer Priorität zurückgegeben



Kopf akzeptierenRückgabetyp
application/jsonJSON
application/xmlXML
application/xml,application/jsonJSON
application/json,application/xmlJSON
application/xml; q=1.0,application/json; q=1.0JSON
application/xml; q=0.9,application/json; q=0,9JSON
application/xml; q=1.0,application/json; q=0,9XML
application/xml; q=0.9,application/json; q=1.0JSON


Wie unten gezeigt:





Vorhergehend:Python3 implementiert horizontale Partitionierungstabellen mit gleichzeitigem Zugriff
Nächster:.Net MVC implementiert Long Polling
Veröffentlicht am 30.11.2017 11:06:08 |
Es ist erstaunlich, ich habe diese Situation schon einmal erlebt, aber ich habe nicht darüber nachgedacht, warum
 Vermieter| Veröffentlicht am 30.11.2017 11:07:36 |
QWERTYU Veröffentlicht am 30.11.2017, 11:06 Uhr
Es ist erstaunlich, ich habe diese Situation schon einmal erlebt, aber ich habe nicht darüber nachgedacht, warum

Es wird empfohlen, das Rückgeben des XML-Formats zu entmutigen, da in manchen Fällen das Zurückgeben des JSON-Formats normal ist und das zurücksenden XML-Format eine Ausnahme auslöst

Wenn zum Beispiel der Rückgabewert Objekt ist, ist das Rückgabe-JSON-Format normal, und das Rückgabe-XML-Format meldet einen Fehler
Veröffentlicht am 25.04.2018 08:50:44 |
Der Vortrag ist sehr detailliert und es gibt Wissenspunkte, danke, er wurde gesammelt
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com