Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 24777|Svar: 3

[WebAPI] WebAPI tilpasser returdataformatet

[Kopier link]
Opslået på 30/11/2017 11.00.16 | | | |
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:

browserTilbage til formatering  Accepter anmodningsheader
ieJSONtekst/html, applikation/xhtml+xml, */*
KromXMLtekst/html,applikation/xhtml+xml,applikation/xml; q=0.9,billede/webp,billede/apng,*/*; q=0,8
FirefoxXMLtekst/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 hovedReturtype
Applikation/JSONJSON
Applikation/XMLXML
application/xml,application/jsonJSON
application/json,application/xmlJSON
applikation/xml; q=1.0,application/json; q=1,0JSON
applikation/xml; q=0.9,application/json; q=0,9JSON
applikation/xml; q=1.0,application/json; q=0,9XML
applikation/xml; q=0.9,application/json; q=1,0JSON


Som vist nedenfor:





Tidligere:Python3 implementerer horisontale opdelingstabeller med samtidig adgang
Næste:.Net MVC implementerer lang polling
Opslået på 30/11/2017 11.06.08 |
Det er utroligt, jeg har oplevet denne situation før, men jeg tænkte ikke over hvorfor
 Udlejer| Opslået på 30/11/2017 11.07.36 |
QWERTYU Opslået den 30-11-2017 11:06
Det er utroligt, jeg har oplevet denne situation før, men jeg tænkte ikke over hvorfor

Det anbefales at afråde fra at returnere XML-format, fordi det i nogle tilfælde er normalt at returnere JSON-format, og returnerende XML-format udløser en undtagelse

For eksempel, hvis returværdien er objekt, er return JSON-formatet normalt, og return XML-formatet vil rapportere en fejl
Opslået på 25/04/2018 08.50.44 |
Forelæsningen er meget detaljeret, og der er videnspunkter, tak, den er samlet
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com