Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 24777|Odgovoriti: 3

[WebAPI] WebAPI prilagaja format povratnih podatkov

[Kopiraj povezavo]
Objavljeno na 30. 11. 2017 11:00:16 | | | |
V zadnjem času, ko uporabljam WebAPI, brskalnik dostopa do WebAPI, privzeti pa je XML format, mislim, da bi moral uporabnik prilagoditi ta vrnjeni podatkovni format, kar strežniku omogoča, da vrne XML ali JSON format, namesto strežniške kode za konfiguracijo!



Čeprav je strežniško kodo mogoče konfigurirati, mislim, da to ni bil prvotni namen WebAPI-ja.

1. Kateri tip podatkov WebAPI privzeto vrne, json ali xml?
2. Kako spremeniti tip povratnih podatkov WebAPI
Uporabljam brskalnik IE, da zahtevam, da so vrnjeni podatki v JSON formatu, in da je podatkovni format, ki ga vrneta Firefox in Chrome, XML, nato pa uporabim HttpWebRequest, da zahtevam, da je vračilo v JSON formatu. Spraševal sem se, zakaj je isti program, ista konfiguracijska datoteka, zakaj je format izhodnih podatkov drugačen, tudi če privzeto razumete izhodni JSON ali XML, zakaj obstajajo različni brskalniki, izhodni format je drugačen. Po nekaj raziskovanja sem končno ugotovil razlog

Po testiranju so ugotovili, da so podatki, vrnjeni z uporabo brskalnika IE, json, medtem ko Firefox in Chrome uporabljata xml, ter da IE nima tipa "application/xml" v primerjavi s Firefoxom in Chromem, ko se pojavijo http zahteve. Privzeto so podatki v formatu json, medtem ko Firefox in Chrome pošiljata sprejemljive vrste xml, zato se vrnejo xml podatki, naslednje pa je glava zahteve za IE, Firefox in Chrome


Sprejmi se pojavi samo v Prošnjah

Kaj to pomeni: Vrsta medija, ki je sprejemljiva na strani brskalnika


Na primer, Sprejmi: besedilo/html pomeni, da brskalnik lahko sprejme vrsto objave s strežnika kot besedilo/html, kar se običajno imenuje html dokumenti

Če strežnik ne more vrniti podatkov tipa tekst/html, naj vrne napako 406 (nesprejemljivo)

Wildcard * predstavlja katerokoli vrsto

Na primer, Sprejmi: */* pomeni, da brskalnik podpira vse vrste (običajno brskalnik to pošlje strežniku)

Na primer, Sprejmi: besedilo/* pomeni, da so vsi podrazredi besedila sprejemljivi

Accept lahko podpira več vrst ločitev

Na primer, Sprejmi: audio/*; q=0.2, avdio/basic pomeni, da brskalniki raje uporabljajo avdio/basic medijske tipe, če pa tega tipa nimajo, lahko uporabijo tudi druge vrste zvoka

Tukaj se pojavi q=0,2, kar predstavlja stopnjo povezave, privzeta vrednost pa je ena, razporejena od največjega do najmanjšega

Na primer, Sprejmi: besedilo/navadno; q=0,5, besedilo/html, besedilo/x-dvi; q=0,8, besedilo/x-c

Sprejemljive prioritete tipov so naslednje

1) besedilo/html besedilo/x-c

2) besedilo/x-dvi

3) besedilo/navadno

q je vrednost med 0 in 1, privzeta vrednost q je 1, q=0 pa pomeni nesprejemljivo



Nazadnje, rezultati testa:

brskalnikNazaj k oblikovanju  Header Accept Request
iejsontext/html, application/xhtml+xml, */*
Kromxmltext/html,application/xhtml+xml,application/xml; q=0,9,slika/webp, slika/apng,*/*; q=0,8
Firefoxxmltext/html,application/xhtml+xml,application/xml; q=0,9,*/*; q=0,8,*/*



Nadaljujte z naslednjimi testi

1. Pošlje se le sprejemaj:application/json, rezultat pa je vrnjen json

2. Pošlje se le Accept:application/xml, rezultat pa vrne xml

3. Pošlji sprejmi: aplikacijo/xml in aplikacijo/json hkrati, rezultat pa vrne json

4. Pošljite accept:application/json in application/xml hkrati, rezultat pa vrne json

5. Spremeniti prioriteto in hkrati poslati aplikacijo/xml. q=1.0,application/json; q=0,9, rezultat pa je vrnil xml

Iz tega lahko sklepamo:

Tip povratnih podatkov WebAPI je določen s sprejetjem glave zahteve, privzeti tip vrnitve pa je json
1. Če ne obstajata niti application/json niti application/xml, vrni json podatke
2. Ko je na voljo samo aplikacija/json, vrnite podatke json
3. Ko je na voljo samo aplikacija/xml, se vrnejo xml podatki
4. Ko sta aplikacija/json in aplikacija/json hkrati, je vrnjeni podatkovni tip nepomemben za vrstni red obeh; če imata oba enako prioriteto, se vrne json, in če je prioriteta drugačna, se vrne tip z višjo prioriteto



Sprejmi glavoVrsta vračila
application/jsonjson
application/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


Kot je prikazano spodaj:





Prejšnji:python3 implementira horizontalne tabele za sočasni dostop
Naslednji:.Net MVC izvaja dolge ankete
Objavljeno na 30. 11. 2017 11:06:08 |
Neverjetno je, že prej sem naletel na to situacijo, a nisem razmišljal zakaj
 Najemodajalec| Objavljeno na 30. 11. 2017 11:07:36 |
QWERTYU Objavljeno 30. 11. 2017 ob 11:06
Neverjetno je, že prej sem naletel na to situacijo, a nisem razmišljal zakaj

Priporočljivo je, da se ne vračajo vračanja XML formata, saj je v nekaterih primerih vračanje JSON formata normalno, vračanje XML formata pa vrže izjemo

Na primer, če je vrnjena vrednost objekt, je vrnjeni JSON format normalen, vrnjeni XML format pa bo poročal o napaki
Objavljeno na 25. 04. 2018 08:50:44 |
Predavanje je zelo podrobno in vsebuje točke znanja, hvala, zbrane so
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com