For nylig, når jeg bruger WebAPI, tilgår browseren WebAPI, og standarden er XML-format; jeg mener, at dette returnerede dataformat bør tilpasses af brugeren, så serveren kan returnere XML- eller JSON-format i stedet for serverkode at konfigurere!
Selvom serverkoden kan konfigureres, tror jeg ikke, det var den oprindelige intention med WebAPI.
1. Hvilken datatype returnerer WebAPI som standard, json eller xml? 2. Hvordan man ændrer returdatatypen for WebAPI Jeg bruger IE-browseren til at anmode om, at de returnerede data er i JSON-format, og dataformatet returneret af Firefox og Chrome er XML, og så bruger jeg HttpWebRequest til at anmode om, at returen er JSON-format. Jeg undrede mig over, hvorfor det samme program, den samme konfigurationsfil, hvorfor er outputdataformatet forskelligt, selvom din standard output-json eller xml kan forstås, hvorfor er der forskellige browsere, outputformatet er forskelligt. Efter lidt research fandt jeg endelig ud af årsagen
Efter test blev det konstateret, at de data, der returneres ved brug af IE-browseren, er json, mens brug af Firefox og Chrome er xml, og det blev fundet, at IE mangler typen "application/xml" sammenlignet med Firefox og Chrome, når http-anmodninger opstår. Så standarden er json-formatdata, mens Firefox og Chrome sender acceptable xml-typer, så xml-data returneres, og følgende er forespørgselsheaderen for IE, Firefox og Chrome
Accepter vises kun i Anmodninger
Hvad det betyder: Den type medie, der er acceptabelt på browsersiden
For eksempel betyder Accept: text/html, at browseren kan acceptere typen af postback fra serveren som tekst/html, hvilket almindeligvis kaldes html-dokumenter
Hvis serveren ikke kan returnere data af typen tekst/html, bør serveren returnere en 406-fejl (ikke acceptabelt)
Wildcard * repræsenterer enhver type
For eksempel betyder Accept: */*, at browseren kan håndtere alle typer (generelt sender browseren dette til serveren)
For eksempel betyder Accept: text/*, at alle underklasser af tekst er acceptable
Accept kan understøtte flere typer separationer
For eksempel Accepter: lyd/*; q=0.2, lyd/basic betyder, at browsere foretrækker lyd-/basic-medietyper, men hvis de ikke har denne type, kan andre lydtyper også bruges
Her optræder en q=0,2, som er en værdi, der repræsenterer graden af association, og standardværdien er én, arrangeret fra størst til mindste
For eksempel, Accept: tekst/klar; q=0,5, tekst/html, tekst/x-dvi; q=0,8, tekst/x-c
De acceptable typeprioriteter er som følger
1) tekst/html tekst/x-c
2) tekst/x-dvi
3) tekst/ren
q er en værdi mellem 0-1, standardværdien for q er 1, og q=0 betyder ikke-acceptabel
Endelig resultaterne af testen:
| browser | Tilbage til formatering | Accepter anmodningsheader | | ie | JSON | tekst/html, applikation/xhtml+xml, */* | | Krom | XML | tekst/html,applikation/xhtml+xml,applikation/xml; q=0.9,billede/webp,billede/apng,*/*; q=0,8 | | Firefox | XML | tekst/html,applikation/xhtml+xml,applikation/xml; q=0,9,*/*; q=0,8,*/* |
Fortsæt med følgende tests
1. Kun accept:application/json sendes, og resultatet returneres json
2. Kun accept:application/xml sendes, og resultatet returnerer xml
3. Send accept: application/xml og application/json på samme tid, og resultatet returnerer json
4. Send accept:application/json og application/xml samtidig, og resultatet returnerer json
5. Ændr prioriteten og send applikation/xml samtidig. q=1.0,application/json; q=0,9, og resultatet returnerede XML
Ud fra dette kan det konkluderes:
Return data-typen for WebAPI bestemmes af, at anmodningsheaderen accepteres, og standard return-typen er json 1. Hvis hverken application/json eller application/xml eksisterer, returner json-dataene 2. Når kun applikation/json er tilgængelig, returnerer json-dataene 3. Når kun applikation/xml er tilgængelig, returneres xml-dataene 4. Når der er application/json og application/json på samme tid, er den returnerede datatype irrelevant for rækkefølgen af de to; hvis de to har samme prioritet, returneres json, og hvis prioriteten er forskellig, returneres typen med højere prioritet
| Accepter hoved | Returtype | | Applikation/JSON | JSON | | Applikation/XML | XML | | application/xml,application/json | JSON | | application/json,application/xml | JSON | | applikation/xml; q=1.0,application/json; q=1,0 | JSON | | applikation/xml; q=0.9,application/json; q=0,9 | JSON | | applikation/xml; q=1.0,application/json; q=0,9 | XML | | applikation/xml; q=0.9,application/json; q=1,0 | JSON |
Som vist nedenfor:
|