Neseniai, kai naudojate WebAPI, naršyklė pasiekia WebAPI, o numatytasis yra XML formatas, manau, kad šis grąžintas duomenų formatas turėtų būti pritaikomas vartotojui, leidžiantis serveriui grąžinti XML formatą arba JSON formatą, o ne serverio kodą konfigūruoti!
Nors serverio kodą galima sukonfigūruoti, nemanau, kad tai buvo pirminis WebAPI ketinimas.
1. Kokio tipo duomenis WebAPI grąžina pagal numatytuosius nustatymus, json ar xml? 2. Kaip pakeisti WebAPI grąžinamųjų duomenų tipą Aš naudoju IE naršyklę, kad prašyčiau, kad grąžinami duomenys būtų JSON formatu, o "Firefox" ir "Chrome" grąžintas duomenų formatas yra XML, o tada naudoju "HttpWebRequest", kad paprašyčiau, kad grąžinimas būtų JSON formatas, man įdomu, kodėl ta pati programa, tas pats konfigūracijos failas, kodėl išvesties duomenų formatas skiriasi, net jei numatytasis išvesties JSON arba XML formatas gali būti suprantamas, kodėl yra skirtingos naršyklės, išvesties formatas skiriasi, Po tam tikrų tyrimų, aš pagaliau išsiaiškinau priežastį
Po bandymų buvo nustatyta, kad duomenys, grąžinti naudojant IE naršyklę, yra json, o naudojant Firefox ir Chrome yra xml, ir nustatyta, kad IE trūksta "application/xml" tipo, palyginti su Firefox ir Chrome, kai atsiranda http užklausos. Taigi numatytasis yra json formato duomenys, o "Firefox" ir "Chrome" siunčia priimtinus xml tipus, todėl grąžinami xml duomenys, o toliau pateikiama IE, Firefox ir Chrome užklausos antraštė
Priimti rodoma tik užklausose
Ką tai reiškia: naršyklės pusėje priimtinas laikmenos tipas
Pavyzdžiui, Sutinku: tekstas/html reiškia, kad naršyklė gali priimti atgalinio pranešimo tipą iš serverio kaip tekstą/html, kuris paprastai vadinamas html dokumentais
Jei serveris negali grąžinti text/html tipo duomenų, serveris turėtų pateikti 406 klaidą (nepriimtina)
Pakaitos simbolis * reiškia bet kokį tipą
Pavyzdžiui, Sutinku: */* reiškia, kad naršyklė gali apdoroti visus tipus (paprastai naršyklė siunčia tai į serverį)
Pavyzdžiui, Accept: text/* reiškia, kad visi teksto poklasiai yra priimtini
Priimti gali palaikyti kelių tipų atskyrimus
Pavyzdžiui, Sutinku: garsas/*; q=0.2, audio/basic reiškia, kad naršyklės teikia pirmenybę audio/basic medijos tipams, bet jei jie neturi šio tipo, galima naudoti ir kitus garso tipus
Čia pasirodo q=0.2, kuri yra reikšmė, nurodanti asociacijos laipsnį, o numatytoji reikšmė yra viena, išdėstyta nuo didžiausios iki mažiausios
Pavyzdžiui, Sutinku: tekstas / paprastas; q=0.5, tekstas/html, tekstas/x-dvi; q=0.8, tekstas/x-c
Priimtini tipo prioritetai yra šie
1) tekstas/html tekstas/x-c
2) tekstas / x-dvi
3) Tekstas / paprastas
q yra reikšmė tarp 0-1, numatytoji q reikšmė yra 1, o q=0 reiškia nepriimtina
Galiausiai testo rezultatai:
| naršyklė | Grįžti į formatavimą | Priimti užklausos antraštę | | ty | JSON | tekstas/html, programa/xhtml+xml, */* | | chromas | xml | tekstas/html,programa/xhtml+xml,programa/xml; q=0.9,vaizdas/webp,vaizdas/apng,*/*; q = 0,8 | | "Firefox" | xml | tekstas/html,programa/xhtml+xml,programa/xml; q=0,9,*/*; q=0,8,*/* |
Tęskite šiuos bandymus
1. Tik priimti: išsiunčiama paraiška/json, o rezultatas grąžinamas json
2. Siunčiamas tik accept:application/xml ir rezultatas grąžina xml
3. Siųskite accept: application/xml ir application/json tuo pačiu metu, o rezultatas grąžins json
4. Siųskite accept:application/json ir application/xml tuo pačiu metu, o rezultatas grąžins json
5. Pakeiskite prioritetą ir tuo pačiu metu siųskite paraišką/xml. q=1.0,taikymas/json; q=0,9, o rezultatas grąžino xml
Iš to galima daryti išvadą:
WebAPI grąžinamų duomenų tipas nustatomas pagal užklausos antraštės priėmimą, o numatytasis grąžinimo tipas yra json 1. Jei nėra nei programos/json, nei programos/xml, grąžinkite json duomenis 2. Kai pasiekiama tik programa / json, grąžinkite json duomenis 3. Kai yra tik programa/xml, grąžinami xml duomenys 4. Kai tuo pačiu metu yra application/json ir application/json, grąžinamas duomenų tipas neturi reikšmės abiejų tvarkai, jei abu turi tą patį prioritetą, json grąžinamas, o jei prioritetas skiriasi, grąžinamas tipas su didesniu prioritetu
| Priimti galvą | Grąžinimo tipas | | Programa/JSON | JSON | | Taikymas / XML | xml | | Programa/xml,Programa/JSON | JSON | | Taikymas / JSON, Taikymas / XML | JSON | | paraiška / xml; q=1.0,taikymas/json; q=1.0 | JSON | | paraiška / xml; q=0.9,taikymas/json; q = 0,9 | JSON | | paraiška / xml; q=1.0,taikymas/json; q = 0,9 | xml | | paraiška / xml; q=0.9,taikymas/json; q=1.0 | JSON |
Kaip parodyta žemiau:
|