Viime aikoina, kun käytetään WebAPI:ta, selain käyttää WebAPI:a, ja oletus on XML-muoto, mielestäni tämän palautetun datan muodon pitäisi olla käyttäjän muokattavissa, jolloin palvelin voi palauttaa XML- tai JSON-muodon palvelimen koodin sijaan!
Vaikka palvelinkoodia voi konfiguroida, en usko, että se oli WebAPI:n alkuperäinen tarkoitus.
1. Minkä tietotyypin WebAPI palauttaa oletuksena, json vai xml? 2. Kuinka muuttaa WebAPI:n palautusdatatyyppiä Käytän IE-selainta pyytääkseni, että palautettu data on JSON-muodossa, ja Firefoxin sekä Chromen palauttama tiedostomuoto on XML, ja sitten käytän HttpWebRequestia pyytääkseni, että palautus on JSON-muodossa, mietin, miksi sama ohjelma, sama konfiguraatiotiedosto, miksi tulostiedostomuoto on erilainen, vaikka oletustulos json tai xml olisi ymmärrettävä, miksi selaimet ovat eri ja tulostusmuoto on erilainen, Pienen tutkimuksen jälkeen sain vihdoin selville syyn
Testauksen jälkeen havaittiin, että IE-selaimella palautettu data on json, kun taas Firefoxissa ja Chromessa on xml, ja todettiin, että IE:llä ei ole "application/xml"-tyyppiä verrattuna Firefoxiin ja Chromeen, kun http-pyyntöjä esiintyy. Oletuksena on siis json-muotoinen data, kun taas Firefox ja Chrome lähettävät hyväksyttäviä xml-tyyppejä, jolloin xml-data palautetaan, ja seuraava on IE:n, Firefoxin ja Chromen pyyntöotsikko
Hyväksy näkyy vain Pyynnöissä
Mitä se tarkoittaa: Median tyyppi, joka on hyväksyttävää selaimen puolella
Esimerkiksi Hyväksy: teksti/html tarkoittaa, että selain voi hyväksyä palvelimelta tulevan postback-tyypin tekstinä/html-muodossa, jota yleisesti kutsutaan html-dokumenteiksi
Jos palvelin ei pysty palauttamaan teksti- tai html-tyyppisiä tietoja, palvelimen pitäisi palauttaa 406-virhe (ei hyväksyttävää).
Jokerikortti * edustaa mitä tahansa tyyppiä
Esimerkiksi Hyväksy: */* tarkoittaa, että selain pystyy käsittelemään kaikkia tyyppejä (yleensä selain lähettää tämän palvelimelle)
Esimerkiksi Hyväksy: teksti/* tarkoittaa, että kaikki tekstin alaluokat ovat hyväksyttäviä
Accept voi tukea useita erottelutyyppejä
Esimerkiksi Hyväksy: audio/*; q=0.2, audio/basic tarkoittaa, että selaimet suosivat audio/basic-mediatyyppejä, mutta jos tätä tyyppiä ei ole, voidaan käyttää myös muita äänityyppejä
Tässä esiintyy q=0.2, joka edustaa assosiaation astetta ja oletusarvo on yksi, järjestettynä suurimmasta pienimpään
Esimerkiksi Hyväksy: teksti/selvä; q=0.5, teksti/html, teksti/x-dvi; q=0.8, teksti/x-c
Hyväksyttävät tyyppiprioriteetit ovat seuraavat
1) teksti/html-teksti/x-c
2)teksti/x-dvi
3) teksti/selvä
q on arvo välillä 0–1, q:n oletusarvo on 1, ja q=0 tarkoittaa ei-hyväksyttävää
Lopuksi testitulokset:
| selain | Paluu muotoiluun | Hyväksy pyyntöotsikko | | eli | json | teksti/html, sovellus/xhtml+xml, */* | | Chrome | xml | teksti/html,application/xhtml+xml,application/xml; q=0.9,image/webp,image/apng,*/*; q=0.8 | | Firefox | xml | teksti/html,application/xhtml+xml,application/xml; q=0,9,*/*; q=0.8,*/* |
Jatka seuraavilla testeillä
1. Vain accept:application/json lähetetään, ja tulos palautetaan json
2. Vain accept:application/xml lähetetään, ja tulos palauttaa xml
3. Lähetä accept: application/xml ja application/json samanaikaisesti, ja tulos palauttaa json
4. Lähetä accept:application/json ja application/xml samanaikaisesti, ja tulos palauttaa json
5. Muokkaa prioriteettia ja lähetä application/xml samanaikaisesti. q=1.0,application/json; q=0.9, ja tulos palautti xml
Tästä voidaan päätellä:
WebAPI:n palautusdatatyyppi määräytyy pyyntöotsikon hyväksymisen perusteella, ja oletuspalautustyyppi on json 1. Jos application/json tai application/xml eivät ole olemassa, palauta json-data 2. Kun saatavilla on vain application/json, palauta json-tiedot 3. Kun saatavilla on vain application/xml, xml-data palautetaan 4. Kun application/json ja application/json ovat samanaikaisesti, palautettu tietotyyppi ei ole merkityksellinen näiden kahden järjestyksen kannalta; jos molemmilla on sama prioriteetti, palautetaan json, ja jos prioriteetti on eri, palautetaan korkeamman prioriteetin tyyppi
| Hyväksy johtaja | Palautustyyppi | | Application/JSON | json | | Sovellus/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 |
Kuten alla on esitetty:
|