Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 24777|Răspunde: 3

[WebAPI] WebAPI personalizează formatul datelor returnate

[Copiază linkul]
Postat pe 30.11.2017 11:00:16 | | | |
Recent, când folosesc WebAPI, browserul accesează WebAPI, iar implicit este formatul XML; cred că acest format de date returnat ar trebui să fie personalizabil de către utilizator, permițând serverului să returneze formatul XML sau JSON, în loc să configureze codul serverului!



Deși codul serverului poate fi configurat, nu cred că aceasta a fost intenția inițială a WebAPI.

1. Ce tip de date returnează WebAPI implicit, json sau xml?
2. Cum să modifici tipul de date de retur al WebAPI
Folosesc browserul IE pentru a cere ca datele returnate să fie în format JSON, iar formatul de date returnat de Firefox și Chrome este XML, apoi folosesc HttpWebRequest pentru a cere ca returnarea să fie în format JSON, m-am întrebat de ce același program, același fișier de configurare, de ce formatul de date de ieșire este diferit, chiar dacă implicit este json sau xml de ieșire poate fi înțeles, de ce există browsere diferite, formatul de ieșire este diferit, După ceva cercetări, în sfârșit am descoperit motivul

După testare, s-a constatat că datele returnate prin browserul IE sunt json, în timp ce Firefox și Chrome sunt xml, iar IE nu are tipul "application/xml" comparativ cu Firefox și Chrome atunci când apar cereri http. Deci implicit este formatul json data, în timp ce Firefox și Chrome trimit tipuri XML acceptabile, astfel încât datele xml sunt returnate, iar următoarele sunt antetul cererii pentru IE, Firefox și Chrome


Acceptarea apare doar în Solicitări

Ce înseamnă: Tipul de media acceptabilă pe partea browserului


De exemplu, Accept: text/html înseamnă că browserul poate accepta tipul de postback de la server ca text/html, ceea ce este denumit în mod obișnuit documente html

Dacă serverul nu poate returna date de tip text/html, ar trebui să returneze o eroare 406 (inacceptabil)

Wildcard * reprezintă orice tip

De exemplu, Accept: */* înseamnă că browserul poate gestiona toate tipurile (în general, browserul trimite acest lucru către server)

De exemplu, Accept: text/* înseamnă că toate subclasele de text sunt acceptabile

Accept poate suporta mai multe tipuri de separări

De exemplu, Accept: audio/*; Q=0.2, audio/basic înseamnă că browserele preferă tipurile audio/basic media, dar dacă nu au acest tip, pot fi folosite și alte tipuri audio

Aici apare un q=0,2, care reprezintă gradul de asociere, iar valoarea implicită este unu, aranjat de la cel mai mare la cel mai mic

De exemplu, Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c

Prioritățile de tip acceptabile sunt următoarele

1) text/text html/x-c

2) text/x-dvi

3) text/simplu

q este o valoare între 0-1, valoarea implicită a lui q este 1, iar q=0 înseamnă inacceptabil



În final, rezultatele testului:

browserÎntoarcerea la formatare  Antet Accept Request
adicăjsontext/html, aplicație/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,*/*



Continuați cu următoarele teste

1. Se trimite doar accept:application/json, iar rezultatul este returnat json

2. Se trimite doar accept:application/xml, iar rezultatul returnează xml

3. Trimite accept: application/xml și application/json în același timp, iar rezultatul returnează json

4. Trimite accept:application/json și application/xml în același timp, iar rezultatul returnează json

5. Modifică prioritatea și trimite application/xml în același timp. q=1.0,application/json; q=0.9, iar rezultatul returna xml

Din aceasta se poate concluziona:

Tipul de date de returnare al WebAPI este determinat de acceptarea antetului de cerere, iar tipul implicit de returnare este json
1. Dacă nici application/json, nici application/xml nu există, returnați datele json
2. Când este disponibil doar aplicație/json, returnați datele json
3. Când sunt disponibile doar aplicații/xml, datele xml sunt returnate
4. Când există aplicații/json și aplicație/json în același timp, tipul de date returnat este irelevant pentru ordinea celor două, dacă cele două au aceeași prioritate, json este returnat, iar dacă prioritatea este diferită, tipul cu prioritate mai mare este returnat



Acceptă capulTip de retur
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


Așa cum se arată mai jos:





Precedent:Python3 implementează tabele de partiționare orizontală cu acces concurent
Următor:.Net MVC implementează sondaje lungi
Postat pe 30.11.2017 11:06:08 |
E uimitor, am mai întâlnit această situație, dar nu m-am gândit de ce
 Proprietarul| Postat pe 30.11.2017 11:07:36 |
QWERTYU Postat la 2017-11-30 11:06
E uimitor, am mai întâlnit această situație, dar nu m-am gândit de ce

Se recomandă să se descurajeze returnarea formatului XML deoarece, în unele cazuri, returnarea formatului JSON este normală, iar returnarea formatului XML aruncă o excepție

De exemplu, dacă valoarea returnată este obiect, formatul return JSON este normal, iar formatul return XML va raporta o eroare
Postat pe 25.04.2018 08:50:44 |
Prelegerea este foarte detaliată și există puncte de cunoaștere, mulțumesc, a fost colectată
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com