Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 24777|Risposta: 3

[WebAPI] WebAPI personalizza il formato dei dati di ritorno

[Copiato link]
Pubblicato su 30/11/2017 11:00:16 | | | |
Recentemente, quando si usa WebAPI, il browser accede alla WebAPI e il formato predefinito è XML; penso che questo formato di dato restituito dovrebbe essere personalizzabile dall'utente, permettendo al server di restituire il formato XML o JSON, invece che il codice del server da configurare!



Anche se il codice del server può essere configurato, non credo fosse l'intenzione originale di WebAPI.

1. Quale tipo di dato restituisce WebAPI di default, json o xml?
2. Come modificare il tipo di dato di ritorno di WebAPI
Uso il browser IE per richiedere che i dati restituiti siano in formato JSON, e che il formato dati restituito da Firefox e Chrome sia XML, e poi uso HttpWebRequest per richiedere che il ritorno sia in formato JSON, mi sono chiesto, perché lo stesso programma, lo stesso file di configurazione, perché il formato dei dati di output sia diverso, anche se il tuo output JSON o XML di default può essere compreso, perché ci sono browser diversi, il formato di output è diverso, Dopo alcune ricerche, finalmente ho capito il motivo

Dopo i test, è stato riscontrato che i dati restituiti tramite il browser IE sono json, mentre Firefox e Chrome sono xml, e si è constatato che IE manca del tipo "application/xml" rispetto a Firefox e Chrome quando si verificano richieste http. Quindi il formato predefinito è i dati in formato json, mentre Firefox e Chrome inviano tipi xml accettabili, quindi i dati xml vengono restituiti, e di seguito è l'intestazione richiesta di IE, Firefox e Chrome


Accetta appare solo nelle Richieste

Cosa significa: Il tipo di media accettabile dal lato del browser


Ad esempio, Accetta: testo/html significa che il browser può accettare il tipo di postback dal server come testo/html, comunemente chiamato documenti html

Se il server non può restituire dati di tipo testo/html, dovrebbe restituire un errore 406 (non accettabile)

Il jolly * rappresenta qualsiasi tipo

Ad esempio, Accetta: */* significa che il browser può gestire tutti i tipi (generalmente il browser invia questo al server)

Ad esempio, Accetta: testo/* significa che tutte le sottoclassi di testo sono accettabili

Accettare può supportare diversi tipi di separazioni

Ad esempio, Accetta: audio/*; Q=0.2, audio/basic indica che i browser preferiscono tipi audio/media basic, ma se non hanno questo tipo, possono essere usati anche altri tipi audio

Qui appare un q=0,2, che è un valore che rappresenta il grado di associazione, e il valore predefinito è uno, ordinato dal più grande al più piccolo

Ad esempio, Accetta: testo/semplice; Q=0.5, Testo/HTML, Testo/X-Dvi; q=0.8, testo/x-c

Le priorità di tipo accettabili sono le seguenti

1) Testo/testo html/x-c

2) Testo/X-DVI

3) testo/semplice

q è un valore compreso tra 0 e 1, il valore predefinito di q è 1, e q=0 significa non accettabile



Infine, i risultati del test:

BrowserRitorno alla formattazione  Intestazione di accettazione richiesta
cioèJSONTesto/html, applicazione/xhtml+xml, */*
ChromeXMLtesto/html,application/xhtml+xml,application/xml; q=0.9,immagine/webp,immagine/apng,*/*; q=0,8
FirefoxXMLtesto/html,application/xhtml+xml,application/xml; q=0,9,*/*; q=0.8,*/*



Continua con i seguenti test

1. Viene inviato solo accettare:application/json e il risultato viene restituito json

2. Viene inviato solo accettazione:application/xml e il risultato restituisce xml

3. Invia accettazione: application/xml e application/json contemporaneamente, e il risultato restituisce json

4. Invia accettazione:application/json e application/xml contemporaneamente, e il risultato restituisce json

5. Modificare la priorità e inviare application/xml contemporaneamente. q=1.0,application/json; q=0,9, e il risultato restituì XML

Da questo si può concludere:

Il tipo di dato di ritorno di WebAPI è determinato dall'accettazione dell'intestazione della richiesta, e il tipo di ritorno predefinito è json
1. Se non esistono né application/json né application/xml, restituisci i dati json
2. Quando sono disponibili solo application/json, restituire i dati json
3. Quando sono disponibili solo application/xml, i dati xml vengono restituiti
4. Quando ci sono application/json e application/json contemporaneamente, il tipo di dato restituito è irrilevante rispetto all'ordine dei due; se i due hanno la stessa priorità, si restituisce json, e se la priorità è diversa, il tipo con priorità più alta viene restituito



Accetta la testaTipo di ritorno
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


Come mostrato di seguito:





Precedente:Python3 implementa tabelle di partizionamento orizzontale con accesso concorrente
Prossimo:.Net MVC implementa il long polling
Pubblicato su 30/11/2017 11:06:08 |
È incredibile, avevo già trovato questa situazione, ma non pensavo al perché
 Padrone di casa| Pubblicato su 30/11/2017 11:07:36 |
QWERTYU Pubblicato il 30-11-2017 alle 11:06
È incredibile, avevo già trovato questa situazione, ma non pensavo al perché

Si consiglia di scoraggiare il ritorno del formato XML perché, in alcuni casi, il ritorno del formato JSON è normale e il ritorno del formato XML fa un'eccezione

Ad esempio, se il valore di ritorno è oggetto, il formato JSON di ritorno è normale, e il formato XML di ritorno riporterà un errore
Pubblicato su 25/04/2018 08:50:44 |
La lezione è molto dettagliata, e ci sono punti di conoscenza, grazie, è stata raccolta
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com