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:
| Browser | Zurück zur Formatierung | Anforderungs-Header | | ie | JSON | text/html, application/xhtml+xml, */* | | Chrome | XML | text/html,application/xhtml+xml,application/xml; q=0.9,Bild/webp,bild/apng,*/*; q=0,8 | | Firefox | XML | text/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 akzeptieren | Rückgabetyp | | application/json | JSON | | application/xml | XML | | application/xml,application/json | JSON | | application/json,application/xml | JSON | | application/xml; q=1.0,application/json; q=1.0 | JSON | | application/xml; q=0.9,application/json; q=0,9 | JSON | | application/xml; q=1.0,application/json; q=0,9 | XML | | application/xml; q=0.9,application/json; q=1.0 | JSON |
Wie unten gezeigt:
|