Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 24777|Atbildi: 3

[Tīmekļa API] WebAPI pielāgo atgriezto datu formātu

[Kopēt saiti]
Publicēts 30.11.2017 11:00:16 | | | |
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ūkprogrammaAtgriezties pie formatējuma  Pieprasījuma galvenes akceptēšana
ti,JSONteksts/html, lietojumprogramma/xhtml+xml, */*
HromsXMLteksts/html,lietojumprogramma/xhtml+xml,lietojumprogramma/xml; q=0.9,attēls/webp,attēls/apng,*/*; q = 0,8
FirefoxXMLteksts/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 galvuAtgriešanas veids
Lietojumprogramma/JSONJSON
Aplikācija/XMLXML
lietojumprogramma/xml,lietojumprogramma/jsonJSON
lietojumprogramma/json,lietojumprogramma/xmlJSON
lietojumprogramma/xml; q=1.0,lietojumprogramma/json; q=1.0JSON
lietojumprogramma/xml; q=0.9,pielietojums/json; q = 0,9JSON
lietojumprogramma/xml; q=1.0,lietojumprogramma/json; q = 0,9XML
lietojumprogramma/xml; q=0.9,pielietojums/json; q=1.0JSON


Kā parādīts zemāk:





Iepriekšējo:Python3 ievieš vienlaicīgas piekļuves horizontālās nodalījuma tabulas
Nākamo:.Net MVC īsteno garu aptauju
Publicēts 30.11.2017 11:06:08 |
Tas ir pārsteidzoši, es atradu šo situāciju iepriekš, bet es nedomāju, kāpēc
 Saimnieks| Publicēts 30.11.2017 11:07:36 |
QWERTYU Publicēts 2017-11-30 11:06
Tas ir pārsteidzoši, es atradu šo situāciju iepriekš, bet es nedomāju, kāpēc

Ieteicams atturēties no XML formāta atgriešanas, jo dažos gadījumos JSON formāta atgriešana ir normāla un XML formāta atgriešana rada izņēmumu

Piemēram, ja atgrieztā vērtība ir objekts, atgrieztais JSON formāts ir normāls, un atgrieztais XML formāts ziņos par kļūdu
Publicēts 25.04.2018 08:50:44 |
Lekcija ir ļoti detalizēta, un ir zināšanu punkti, paldies, tas ir savākts
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com