See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 24777|Vastuse: 3

[WebAPI] WebAPI kohandab tagastusandmete vormingut

[Kopeeri link]
Postitatud 30.11.2017 11:00:16 | | | |
Hiljuti, kui kasutan WebAPI-d, pääseb brauser WebAPI-le ligi ja vaikimisi on XML-formaat, arvan, et see tagastatud andmeformaat peaks olema kasutaja poolt kohandatav, võimaldades serveril tagastada XML-i või JSON-formaadi, mitte serverikoodi seadistamiseks!



Kuigi serverikoodi saab seadistada, ei usu ma, et see oli WebAPI algne eesmärk.

1. Millist andmetüüpi WebAPI vaikimisi tagastab, json või xml?
2. Kuidas muuta WebAPI tagastusandmete tüüpi
Kasutan IE brauserit, et paluda, et tagastatud andmed oleksid JSON-formaadis, ja Firefoxi ning Chrome'i poolt tagastatud andmeformaat on XML, ning siis kasutan HttpWebRequesti, et paluda, et tagastus oleks JSON-formaat, mõtlesin, miks on sama programm, sama konfiguratsioonifail, miks on väljundandmete formaat erinev, isegi kui vaikimisi on väljund json või xml mõistetav, miks on erinevad brauserid, väljundformaat on erinev, Pärast mõningast uurimist sain lõpuks põhjuse välja

Pärast testimist leiti, et IE brauseri kaudu tagastatav info on json, Firefoxi ja Chrome'i puhul xml, ning leiti, et IE-l puudub "rakendus/xml" tüüp võrreldes Firefoxi ja Chrome'iga, kui esineb http-päringuid. Vaikimisi on json-formaadis andmed, samas kui Firefox ja Chrome saadavad vastuvõetavaid xml-tüüpe, seega tagastatakse xml-andmed, ja järgmine on IE, Firefoxi ja Chrome'i päringute päis


Nõustu ilmub ainult Taotlustes

Mida see tähendab: Meedia tüüp, mis on brauseripoolel aktsepteeritav


Näiteks Accept: text/html tähendab, et brauser võib aktsepteerida serveri postbacki tüüpi tekstina/html-ina, mida tavaliselt nimetatakse html-dokumentideks

Kui server ei suuda tagastada teksti/html-tüüpi andmeid, peaks server tagastama 406 vea (vastuvõetamatu).

Wildcard * tähistab mistahes tüüpi

Näiteks Accept: */* tähendab, et brauser suudab hallata kõiki tüüpe (tavaliselt saadab brauser selle serverile)

Näiteks Accept: text/* tähendab, et kõik teksti alamklassid on aktsepteeritavad

Accept võib toetada mitut tüüpi lahutusi

Näiteks aktsepteeri: audio/*; q=0.2, audio/basic tähendab, et brauserid eelistavad audio/basic meediatüüpe, kuid kui neil seda tüüpi pole, saab kasutada ka teisi helitüüpe

Siin ilmub q=0,2, mis tähistab seose astet ning vaikimisi väärtus on üks, mis on paigutatud suurimast väikseimani

Näiteks Aktsepteeri: tekst/plain; q=0.5, tekst/html, tekst/x-dvi; q=0.8, tekst/x-c

Aktsepteeritavad tüübiprioriteedid on järgmised

1) tekst/html tekst/x-c

2)tekst/x-dvi

3) tekst/lihtne

q on väärtus vahemikus 0–1, q vaikimisi väärtus on 1 ja q=0 tähendab mitteaktsepteeritavat



Lõpuks testitulemused:

brauserTagasi vormindamise juurde  Accept request päis
ehkjsontekst/html, rakendus/xhtml+xml, */*
Kroomxmltext/html,application/xhtml+xml,application/xml; q=0.9,image/webp,image/apng,*/*; q=0.8
Firefoxxmltext/html,application/xhtml+xml,application/xml; q=0,9,*/*; q=0.8,*/*



Jätka järgmiste testidega

1. Saadetakse ainult accept:application/json ja tulemus tagastatakse json

2. Ainult accept: application/xml saadetakse ja tulemus tagastab xml

3. Saada accept: application/xml ja application/json samaaegselt ning tulemus tagastab json

4. Saada samaaegselt accept:application/json ja application/xml ning tulemus tagastab json

5. Muuda prioriteeti ja saada rakendus/xml samaaegselt. q=1.0,application/json; q=0.9 ja tulemus tagastas xml

Sellest võib järeldada:

WebAPI tagastusandmetüüp määratakse päringu päise aktsepteerimise järgi ning vaikimisi tagastustüüp on json
1. Kui ei ole olemas ei application/json ega application/xml, tagastage json andmed
2. Kui saadaval on ainult rakendus/json, tagasta json andmed
3. Kui saadaval on ainult rakendus/xml, tagastatakse xml andmed
4. Kui rakendus/json ja rakendus/json on samaaegselt, siis tagastatud andmetüüp ei ole nende järjekorra suhtes oluline; kui mõlemal on sama prioriteet, tagastatakse json ja kui prioriteet on erinev, tagastatakse kõrgema prioriteediga tüüp



Võta pea vastuTagastustüüp
Rakendus/JSONjson
Rakendus/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


Nagu allpool näidatud:





Eelmine:Python3 rakendab samaaegset juurdepääsu horisontaalse partitsioneerimise tabelid
Järgmine:.Net MVC rakendab pikka küsitlust
Postitatud 30.11.2017 11:06:08 |
See on hämmastav, olen varem sellise olukorra leidnud, aga ei mõelnud miks
 Üürileandja| Postitatud 30.11.2017 11:07:36 |
QWERTYU Postitatud 2017-11-30 11:06
See on hämmastav, olen varem sellise olukorra leidnud, aga ei mõelnud miks

Soovitatav on vältida XML-formaadi tagastamist, sest mõnel juhul on JSON-formaadi tagastamine normaalne ja XML-formaadi tagastamine toob erandi

Näiteks, kui tagastusväärtus on objekt, on tagastus-JSON-formaat normaalne ja tagastatav XML-formaat teatab veast
Postitatud 25.04.2018 08:50:44 |
Loeng on väga põhjalik ja seal on ka teadmiste punkte, aitäh, see on kogutud
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com