Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 24777|Svar: 3

[WebAPI] WebAPI anpassar returdataformatet

[Kopiera länk]
Publicerad på 2017-11-30 11:00:16 | | | |
Nyligen, när jag använder WebAPI, använder webbläsaren WebAPI, och standarden är XML-format, jag tycker att detta returnerade dataformat bör anpassas av användaren, så att servern kan returnera XML- eller JSON-format istället för serverkod att konfigurera!



Även om serverkoden kan konfigureras tror jag inte att det var WebAPI:s ursprungliga avsikt.

1. Vilken datatyp returnerar WebAPI som standard, json eller xml?
2. Hur man modifierar returdatatypen för WebAPI
Jag använder IE-webbläsaren för att begära att den returnerade datan är i JSON-format, och dataformatet som returneras av Firefox och Chrome är XML, och sedan använder jag HttpWebRequest för att begära att returen är JSON-format, jag undrade, varför är samma program, samma konfigurationsfil, varför är utdataformatet annorlunda, även om din standardutdata-json eller xml kan förstås, varför finns det olika webbläsare, utdataformatet är annorlunda, Efter lite research lyckades jag till slut lista ut orsaken

Efter tester upptäcktes att datan som returneras av IE-webbläsaren är json, medan Firefox och Chrome är xml, och det visar sig att IE saknar typen "application/xml" jämfört med Firefox och Chrome när HTTP-förfrågningar inträffar. Så standarden är json-formatdata, medan Firefox och Chrome skickar acceptabla xml-typer, så xml-data returneras, och följande är begäransökudornas huvud för IE, Firefox och Chrome


Acceptera förekommer endast i Förfrågningar

Vad det betyder: Den typ av media som är acceptabel på webbläsarsidan


Till exempel innebär Accept: text/html att webbläsaren kan acceptera typen av postback från servern som text/html, vilket ofta kallas html-dokument

Om servern inte kan returnera data av typen text/html bör servern returnera ett 406-fel (ej acceptabelt)

Wildcard * representerar vilken typ som helst

Till exempel betyder Accepta: */* att webbläsaren kan hantera alla typer (vanligtvis skickar webbläsaren detta till servern)

Till exempel betyder Accepta: text/* att alla underklasser av text är acceptabla

Acceptera kan stödja flera typer av separationer

Till exempel, Acceptera: ljud/*; q=0.2, audio/basic innebär att webbläsare föredrar audio/basic-medietyper, men om de inte har denna typ kan även andra ljudtyper användas

Här visas en q=0,2, vilket är ett värde som representerar graden av association, och standardvärdet är ett, ordnat från störst till minsta

Till exempel, Acceptera: text/klar; q=0,5, text/html, text/x-dvi; q=0,8, text/x-c

De acceptabla typprioriteringarna är följande

1) text/html text/x-c

2) Text/X-DVI

3) text/ren text

q är ett värde mellan 0-1, standardvärdet för q är 1, och q=0 betyder icke-acceptabelt



Slutligen, testresultaten:

webbläsareÅtergång till formateringen  Acceptera förfrågan-header
dvsJSONText/HTML, Applikation/XHTML+XML, */*
KromXMLtext/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,*/*



Fortsätt med följande tester

1. Endast accept:application/json skickas, och resultatet returneras json

2. Endast accept:application/xml skickas, och resultatet returnerar xml

3. Skicka accepta: application/xml och application/json samtidigt, och resultatet returnerar json

4. Skicka accept:application/json och application/xml samtidigt, och resultatet returnerar json

5. Ändra prioriteten och skicka applikation/xml samtidigt. q=1.0,application/json; q=0,9, och resultatet returnerade xml

Av detta kan man dra slutsatsen:

Return data-typen för WebAPI bestäms av acceptansen av request-headern, och standardtypen är json
1. Om varken application/json eller application/xml existerar, returnera json-datan
2. När endast applikation/json är tillgänglig, returnera json-datan
3. När endast applikation/xml är tillgänglig, returneras xml-data
4. När det finns application/json och application/json samtidigt är den returnerade datatypen irrelevant för ordningen av de två; om de två har samma prioritet returneras json, och om prioriteten är annorlunda returneras typen med högre prioritet



Acceptera huvudReturtyp
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 visas nedan:





Föregående:Python3 implementerar horisontella partitioneringstabeller med samtidig åtkomst
Nästa:.Net MVC implementerar lång polling
Publicerad på 2017-11-30 11:06:08 |
Det är fantastiskt, jag har varit med om den här situationen tidigare, men jag tänkte inte på varför
 Hyresvärd| Publicerad på 2017-11-30 11:07:36 |
QWERTYU Publicerad den 2017-11-30 11:06
Det är fantastiskt, jag har varit med om den här situationen tidigare, men jag tänkte inte på varför

Det rekommenderas att avråda från att returnera XML-format eftersom det i vissa fall är normalt att returnera JSON-format och returnerande XML-format ger ett undantag

Till exempel, om returvärdet är objekt, är retur-JSON-formatet normalt, och retur-XML-formatet rapporterar ett fel
Publicerad på 2018-04-25 08:50:44 |
Föreläsningen är mycket detaljerad och det finns kunskapspunkter, tack, den har samlats in
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com