Nesen, izmantojot WebAPI, pārlūkprogramma piekļūst WebAPI, un noklusējums ir XML formāts, es domāju, ka lietotājam vajadzētu pielāgot šo atgriezto datu formātu, ļaujot serverim atgriezt XML formātu vai JSON formātu, nevis konfigurēt servera kodu!
Lai gan servera kodu var konfigurēt, es nedomāju, ka tas bija sākotnējais WebAPI nodoms.
1. Kādu datu tipu WebAPI atgriež pēc noklusējuma, json vai xml? 2. Kā modificēt WebAPI atgriešanas datu tipu Es izmantoju IE pārlūkprogrammu, lai pieprasītu, lai atgrieztie dati būtu JSON formātā, un Firefox un Chrome atgrieztais datu formāts ir XML, un pēc tam es izmantoju HttpWebRequest, lai pieprasītu, lai atgriešanās būtu JSON formātā, es domāju, kāpēc ir viena un tā pati programma, tas pats konfigurācijas fails, kāpēc izvades datu formāts atšķiras, pat ja noklusējuma izvades json vai xml var saprast, kāpēc ir dažādas pārlūkprogrammas, izvades formāts ir atšķirīgs, Pēc dažiem pētījumiem es beidzot izdomāju iemeslu
Pēc testēšanas tika konstatēts, ka dati, kas atgriezti, izmantojot IE pārlūkprogrammu, ir json, bet Firefox un Chrome ir xml, un tiek konstatēts, ka IE trūkst "application/xml" tipa, salīdzinot ar Firefox un Chrome, kad rodas http pieprasījumi. Tātad noklusējums ir json formāta dati, bet Firefox un Chrome sūta pieņemamus xml tipus, tāpēc xml dati tiek atgriezti, un tālāk ir IE, Firefox un Chrome pieprasījuma galvene
Akceptēt tiek rādīts tikai sadaļā Pieprasījumi
Ko tas nozīmē: pārlūkprogrammas pusē pieņemamais multivides veids
Piemēram, Accept: text/html nozīmē, ka pārlūkprogramma var pieņemt atgriešanas veidu no servera kā text/html, ko parasti dēvē par html dokumentiem
Ja serveris nevar atgriezt text/html tipa datus, serverim jāatgriež kļūda 406 (nepieņemama)
Aizstājējzīme * apzīmē jebkuru tipu
Piemēram, Accept: */* nozīmē, ka pārlūkprogramma var apstrādāt visus veidus (parasti pārlūkprogramma to nosūta serverim)
Piemēram, Accept: text/* nozīmē, ka visas teksta apakšklases ir pieņemamas
Akceptēt var atbalstīt vairāku veidu atdalījumus
Piemēram, Akceptēt: audio/*; q=0.2, audio/basic nozīmē, ka pārlūkprogrammas dod priekšroku audio/pamata multivides veidiem, bet, ja tām nav šāda tipa, var izmantot arī citus audio tipus
Šeit parādās q=0.2, kas ir vērtība, kas apzīmē asociācijas pakāpi, un noklusējuma vērtība ir viena, sakārtota no lielākās līdz mazākajai
Piemēram, Akceptēt: teksts/vienkāršs; q=0.5, teksts/html, teksts/x-dvi; q=0.8, teksts/x-c
Pieņemamās tipa prioritātes ir šādas
1) teksts/html teksts/x-c
2)teksts/x-dvi
3) teksts/vienkāršs
q ir vērtība no 0 līdz 1, q noklusējuma vērtība ir 1, un q = 0 nozīmē nepieņemamu
Visbeidzot, testa rezultāti:
| pārlūkprogramma | Atgriezties pie formatējuma | Pieprasījuma galvenes akceptēšana | | ti, | JSON | teksts/html, lietojumprogramma/xhtml+xml, */* | | Hroms | XML | teksts/html,lietojumprogramma/xhtml+xml,lietojumprogramma/xml; q=0.9,attēls/webp,attēls/apng,*/*; q = 0,8 | | Firefox | XML | teksts/html,lietojumprogramma/xhtml+xml,lietojumprogramma/xml; q=0,9,*/*; q=0,8,*/* |
Turpiniet ar šādiem testiem
1. Tikai pieņemt: pieteikums / json tiek nosūtīts, un rezultāts tiek atgriezts json
2. Tiek nosūtīts tikai accept:application/xml, un rezultāts atgriež xml
3. Nosūtīt akceptu: application/xml un application/json vienlaicīgi, un rezultāts atgriež json
4. Vienlaicīgi nosūtiet accept:application/json un application/xml, un rezultāts atgriež json
5. Mainiet prioritāti un vienlaikus nosūtiet pieteikumu/xml. q=1.0,lietojumprogramma/json; q=0,9, un rezultāts atgrieza XML
No tā var secināt:
WebAPI atgriezto datu tipu nosaka pieprasījuma galvenes akceptēšana, un noklusējuma atgriešanas tips ir json 1. Ja nav ne lietojumprogrammas/json, ne lietojumprogrammas/xml, atgrieziet json datus 2. Ja ir pieejama tikai lietojumprogramma/json, atgrieziet json datus 3. Ja ir pieejama tikai lietojumprogramma/xml, tiek atgriezti xml dati 4. Ja vienlaicīgi ir application/json un application/json, atgrieztais datu tips nav saistīts ar abu secību, ja abiem ir vienāda prioritāte, tiek atgriezts json, un, ja prioritāte ir atšķirīga, tiek atgriezts tips ar augstāku prioritāti
| Pieņemt galvu | Atgriešanas veids | | Lietojumprogramma/JSON | JSON | | Aplikācija/XML | XML | | lietojumprogramma/xml,lietojumprogramma/json | JSON | | lietojumprogramma/json,lietojumprogramma/xml | JSON | | lietojumprogramma/xml; q=1.0,lietojumprogramma/json; q=1.0 | JSON | | lietojumprogramma/xml; q=0.9,pielietojums/json; q = 0,9 | JSON | | lietojumprogramma/xml; q=1.0,lietojumprogramma/json; q = 0,9 | XML | | lietojumprogramma/xml; q=0.9,pielietojums/json; q=1.0 | JSON |
Kā parādīts zemāk:
|