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:
| Browser | Ritorno alla formattazione | Intestazione di accettazione richiesta | | cioè | JSON | Testo/html, applicazione/xhtml+xml, */* | | Chrome | XML | testo/html,application/xhtml+xml,application/xml; q=0.9,immagine/webp,immagine/apng,*/*; q=0,8 | | Firefox | XML | testo/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 testa | Tipo di ritorno | | Application/JSON | JSON | | Application/XML | XML | | application/xml,application/json | JSON | | Application/json,application/XML | JSON | | application/xml; q=1.0,application/json; q=1.0 | JSON | | application/xml; q=0.9,application/json; q=0.9 | JSON | | application/xml; q=1.0,application/json; q=0.9 | XML | | application/xml; q=0.9,application/json; q=1.0 | JSON |
Come mostrato di seguito:
|