Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 24777|Vastaus: 3

[WebAPI] WebAPI räätälöi palautusdatan muodon

[Kopioi linkki]
Julkaistu 30.11.2017 11.00.16 | | | |
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:

selainPaluu muotoiluun  Hyväksy pyyntöotsikko
elijsonteksti/html, sovellus/xhtml+xml, */*
Chromexmlteksti/html,application/xhtml+xml,application/xml; q=0.9,image/webp,image/apng,*/*; q=0.8
Firefoxxmlteksti/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 johtajaPalautustyyppi
Application/JSONjson
Sovellus/XMLxml
application/xml,application/jsonjson
application/json,application/xmljson
application/xml; q=1.0,application/json; q=1.0json
application/xml; q=0.9,application/json; q=0.9json
application/xml; q=1.0,application/json; q=0.9xml
application/xml; q=0.9,application/json; q=1.0json


Kuten alla on esitetty:





Edellinen:Python3 toteuttaa samanaikaiset vaakasuorat osiointitaulukot
Seuraava:.Net MVC toteuttaa pitkän kyselyn
Julkaistu 30.11.2017 11.06.08 |
Se on uskomatonta, olen löytänyt tämän tilanteen aiemmin, mutta en ajatellut miksi
 Vuokraisäntä| Julkaistu 30.11.2017 11.07.36 |
QWERTYU Julkaistu 30.11.2017 klo 11:06
Se on uskomatonta, olen löytänyt tämän tilanteen aiemmin, mutta en ajatellut miksi

Suositellaan välttämään XML-muodon palauttamista, koska joissain tapauksissa JSON-muodon palauttaminen on normaalia ja XML-muodon palauttaminen aiheuttaa poikkeuksen

Esimerkiksi, jos palautusarvo on objekti, palautus-JSON-muoto on normaali, ja palautus-XML-muoto raportoi virheen
Julkaistu 25.4.2018 8.50.44 |
Luento on hyvin yksityiskohtainen, ja siinä on tietopisteitä, kiitos, se on koottu
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com