Nylig, når jeg bruker WebAPI, får nettleseren tilgang til WebAPI, og standarden er XML-format, jeg mener dette returnerte dataformatet bør tilpasses av brukeren, slik at serveren kan returnere XML- eller JSON-format, i stedet for serverkode å konfigurere!
Selv om serverkoden kan konfigureres, tror jeg ikke det var den opprinnelige hensikten med WebAPI.
1. Hvilken datatype returnerer WebAPI som standard, json eller xml? 2. Hvordan endre returdatatypen til WebAPI Jeg bruker IE-nettleseren for å be om at dataene som returneres er i JSON-format, og dataformatet som returneres av Firefox og Chrome er XML, og så bruker jeg HttpWebRequest for å be om at returen er JSON-format, jeg lurte på, hvorfor er det samme programmet, samme konfigurasjonsfil, hvorfor er utdataformatet forskjellig, selv om standard utdata-json eller xml kan forstås, hvorfor finnes det forskjellige nettlesere, utdataformatet er forskjellig, Etter litt research fant jeg endelig ut grunnen
Etter testing ble det funnet at dataene som returneres ved bruk av IE-nettleseren er json, mens bruk av Firefox og Chrome er xml, og det ble funnet at IE mangler typen "application/xml" sammenlignet med Firefox og Chrome når http-forespørsler oppstår. Så standarden er json-formatdata, mens Firefox og Chrome sender akseptable xml-typer, så xml-data returneres, og følgende er forespørselsheaderen til IE, Firefox og Chrome
Aksepter vises kun i forespørsler
Hva det betyr: Hvilken type media som er akseptabelt på nettlesersiden
For eksempel betyr Accept: text/html at nettleseren kan akseptere typen postback fra serveren som tekst/html, noe som ofte kalles html-dokumenter
Hvis serveren ikke kan returnere data av typen tekst/html, skal serveren returnere en 406-feil (ikke akseptabelt)
Wildcard * representerer en hvilken som helst type
For eksempel betyr Accept: */* at nettleseren kan håndtere alle typer, (vanligvis sender nettleseren dette til serveren)
For eksempel betyr Accept: text/* at alle underklasser av tekst er akseptable
Accept kan støtte flere typer separasjoner
For eksempel, Aksepter: lyd/*; q=0.2, audio/basic betyr at nettlesere foretrekker audio/basic-medietyper, men hvis de ikke har denne typen, kan andre lydtyper også brukes
Her oppstår en q=0,2, som er en verdi som representerer graden av assosiasjon, og standardverdien er én, ordnet fra størst til minste
For eksempel, Aksepter: tekst/klar; q=0,5, tekst/html, tekst/x-dvi; q=0,8, tekst/x-c
De akseptable typeprioriteringene er som følger
1) tekst/html tekst/x-c
2)tekst/x-DVI
3) tekst/ren
q er en verdi mellom 0-1, standardverdien for q er 1, og q=0 betyr ikke-akseptabelt
Til slutt, testresultatene:
| nettleser | Tilbake til formatering | Godkjenn forespørselsheader | | ie | JSON | tekst/html, applikasjon/xhtml+xml, */* | | Krom | XML | tekst/html,applikasjon/xhtml+xml,applikasjon/xml; q=0.9,bilde/webp,bilde/apng,*/*; q=0,8 | | Firefox | XML | tekst/html,applikasjon/xhtml+xml,applikasjon/xml; q=0,9,*/*; q=0,8,*/* |
Fortsett med følgende tester
1. Kun aksept:application/json sendes, og resultatet returneres json
2. Kun aksept:application/xml sendes, og resultatet returnerer xml
3. Send aksept: application/xml og application/json samtidig, og resultatet returnerer json
4. Send accept:application/json og application/xml samtidig, og resultatet returnerer json
5. Endre prioritet og send applikasjon/xml samtidig. q=1.0,application/json; q=0,9, og resultatet returnerte xml
Ut fra dette kan det konkluderes:
Returdatatypen til WebAPI bestemmes av aksept av forespørselshodet, og standard returtype er json 1. Hvis verken application/json eller application/xml eksisterer, returner json-dataene 2. Når kun applikasjon/json er tilgjengelig, returner json-dataene 3. Når kun applikasjon/xml er tilgjengelig, returneres xml-dataene 4. Når det er application/json og application/json samtidig, er den returnerte datatypen irrelevant for rekkefølgen av de to; hvis de to har samme prioritet, returneres json, og hvis prioriteten er forskjellig, returneres typen med høyere prioritet
| Ta imot hode | Returtype | | applikasjon/JSON | JSON | | applikasjon/XML | XML | | application/xml,application/json | JSON | | application/json,application/xml | JSON | | applikasjon/XML; q=1.0,application/json; q=1,0 | JSON | | applikasjon/XML; q=0.9,application/json; q=0,9 | JSON | | applikasjon/XML; q=1.0,application/json; q=0,9 | XML | | applikasjon/XML; q=0.9,application/json; q=1,0 | JSON |
Som vist nedenfor:
|