Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 24777|Válasz: 3

[WebAPI] A WebAPI testreszabja a visszaadó adatformátumot

[Linket másol]
Közzétéve 2017. 11. 30. 11:00:16 | | | |
Mostanában, amikor WebAPI-t használunk, a böngésző hozzáfér a WebAPI-hoz, és az alapértelmezett XML formátum, szerintem ezt a visszaküldött adatformátumot a felhasználó testreszabhatja, így a szerver XML vagy JSON formátumot adhat vissza, nem pedig szerverkódot konfigurálhatna!



Bár a szerver kódja konfigurálható, szerintem ez nem volt a WebAPI eredeti célja.

1. Milyen adattípust ad vissza a WebAPI alapértelmezettben, json vagy xml?
2. Hogyan módosítsuk a WebAPI visszaküldési adattípusát
Az IE böngészőt használom, hogy kérjem, hogy a visszaküldött adatok JSON formátumban legyenek, és a Firefox és Chrome által visszaadott adatformátum XML, majd a HttpWebRequest-en kérem, hogy a visszaküldés JSON formátumban legyen, azon gondolkodtam, miért ugyanaz a program, ugyanaz a konfigurációs fájl, miért más, hogy a kimeneti adatformátum más, még ha az alapértelmezett kimeneted json vagy xml is érthető, miért vannak különböző böngészők, a kimeneti formátum más, Némi kutatás után végre rájöttem az okára

Tesztelés után kiderült, hogy az IE böngészővel visszaadott adatok json, míg a Firefox és Chrome xml, és kiderült, hogy az IE nem rendelkezik az "application/xml" típussal a Firefoxhoz és Chromehoz képest, amikor http kérések érkeznek. Tehát az alapértelmezett json formátumú adat, míg a Firefox és a Chrome elfogadható xml típusokat küld, így xml adatokat küldenek vissza, és az alábbi az IE, Firefox és Chrome kérés fejléce


Az elfogadás csak a Kérések között jelenik meg

Mit jelent: Milyen típusú média elfogadható a böngésző oldalon


Például az Accept: text/html azt jelenti, hogy a böngésző elfogadhatja a szerverről érkező postback típust szöveg/html formátumban, amit általában html dokumentumoknak neveznek

Ha a szerver nem tud szöveg/html típusú adatokat visszaadni, akkor a szervernek 406-os hibát kell adnia (nem elfogadható)

A vadkártya * bármilyen típust jelöl

Például az Accept: */* azt jelenti, hogy a böngésző képes kezelni az összes típust (általában a böngésző ezt a szervernek küldi)

Például az Accept: text/* azt jelenti, hogy minden szövegosztály elfogadható

Az Accept többféle szétválasztást is támogathat

Például: Accept: audio/*; q=0.2, audio/basic azt sugallja, hogy a böngészők az audio/basic médiatípusokat részesítik előnyben, de ha nincs ilyen típusuk, más hangtípusok is használhatók

Itt megjelenik egy q=0,2, amely az asszociáció fokát jelképezi, és az alapértelmezett érték egy, a legnagyobbtól a legkisebbőig rendezve

Például: Elfogadni: szöveg/egyszerű; q=0.5, szöveg/html, szöveg/x-dvi; q=0.8, text/x-c

Az elfogadható típusprioritások a következők

1) szöveg/html szöveg/x-c

2)text/x-dvi

3)szöveg/egyszerű

q egy 0-1 közötti érték, q alapértelmezett értéke 1, és q=0 azt jelenti, hogy nem elfogadható



Végül a teszteredmények:

böngészőVisszatérés a formázáshoz  Kérés fejlécének elfogadása
azazjsontext/html, application/xhtml+xml, */*
Chromexmltext/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,*/*



Folytassák a következő teszteket

1. Csak az accept:application/json küldés kerül, és az eredmény visszakerül json

2. Csak az accept:application/xml küldés történik, és az eredmény xml

3. Egyszerre küldjük az accept: application/xml és application/json fájlokat, és az eredmény json-t ad vissza

4. Egyszerre küldd az accept:application/json és application/xml fájlokat, és az eredmény json

5. Módosítsd a prioritást, és egyszerre küldd el az application/xml-t. q=1.0,application/json; q=0,9, és az eredmény xml lett

Ebből következtethető ki:

A WebAPI visszaküldési adattípusát a kérés fejlécének elfogadása határozza meg, és az alapértelmezett visszatérési típus json
1. Ha sem application/json, sem application/xml nem létezik, adja vissza a json adatot
2. Amikor csak application/json érhető el, küldd vissza a json adatokat
3. Amikor csak application/xml érhető el, az xml adatok visszakerülnek
4. Ha egyszerre van application/json és application/json, a visszaküldött adattípus nem releváns a kettő sorrendjében, ha a kettőnek ugyanaz az elsőbbsége, akkor a json visszatér, ha a prioritás eltérő, akkor a magasabb prioritású típus jelenik meg



Elfogadd a fejetVisszatérő típus
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


Ahogy az alábbiakban látható:





Előző:Python3 párhuzamos hozzáférésű vízszintes partíciós táblázatokat valósít meg
Következő:.Net MVC hosszú pollinget valósít meg
Közzétéve 2017. 11. 30. 11:06:08 |
Csodálatos, már korábban is találkoztam ezzel a helyzettel, de nem gondoltam, miért
 Háziúr| Közzétéve 2017. 11. 30. 11:07:36 |
QWERTYU 2017-11-30 11:06-án posztolva
Csodálatos, már korábban is találkoztam ezzel a helyzettel, de nem gondoltam, miért

Ajánlott az XML formátum visszaküldésének elutasítása, mert bizonyos esetekben a JSON formátum visszatérése normális, és az XML formátum visszatérése kivételt képez

Például, ha a return érték objektum, a return JSON formátum normális, és a return XML formátum hibát jelent
Közzétéve 2018. 04. 25. 8:50:44 |
Az előadás nagyon részletes, és vannak benne tudáspontok, köszönöm, összegyűjtöttük
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com