Récemment, lors de l’utilisation de WebAPI, le navigateur accède à WebAPI, et par défaut est le format XML ; je pense que ce format de données retourné devrait être personnalisable par l’utilisateur, permettant au serveur de renvoyer un format XML ou JSON, au lieu de configurer du code serveur !
Bien que le code serveur puisse être configuré, je ne pense pas que ce fût l’intention initiale de WebAPI.
1. Quel type de données WebAPI retourne-t-il par défaut, json ou xml ? 2. Comment modifier le type de données de retour de WebAPI J’utilise le navigateur IE pour demander que les données retournées soient en format JSON, et que le format de données renvoyé par Firefox et Chrome soit XML, puis j’utilise HttpWebRequest pour demander que le retour soit en format JSON, je me suis demandé pourquoi le même programme, le même fichier de configuration, pourquoi le format de données de sortie est différent, même si votre sortie par défaut en json ou xml peut être comprise, pourquoi y a-t-il des navigateurs différents, le format de sortie est différent, Après quelques recherches, j’ai enfin compris la raison
Après test, il a été constaté que les données retournées par le navigateur IE sont json, tandis que Firefox et Chrome sont xml, et il a été constaté qu’IE ne possède pas le type « application/xml » comparé à Firefox et Chrome lorsque les requêtes http sont effectuées. Ainsi, par défaut, les données au format json, tandis que Firefox et Chrome envoient des types XML acceptables, donc les données xml sont renvoyées, et ce qui suit est l’en-tête de requête d’IE, Firefox et Chrome
Accepter n’apparaît que dans les Requêtes
Ce que cela signifie : Le type de média acceptable côté navigateur
Par exemple, Accepter : texte/html signifie que le navigateur peut accepter le type de retour postal du serveur sous forme de texte/html, ce qui est communément appelé documents html
Si le serveur ne peut pas retourner de données de type text/html, il doit renvoyer une erreur 406 (non acceptable)
Le joker * représente n’importe quel type
Par exemple, Accepter : */* signifie que le navigateur peut gérer tous les types (généralement le navigateur envoie cela au serveur)
Par exemple, Accepter : text/* signifie que toutes les sous-classes de texte sont acceptables
Accept peut supporter plusieurs types de séparations
Par exemple, Accepter : audio/* ; Q=0.2, Audio/Basic signifie que les navigateurs préfèrent les types audio/médias Basic, mais s’ils n’ont pas ce type, d’autres types audio peuvent aussi être utilisés
Ici, un q=0,2 apparaît, qui est une valeur représentant le degré d’association, et la valeur par défaut est un, classée du plus grand au plus petit
Par exemple, Accepter : texte/simple ; q=0,5, text/html, text/x-dvi ; q=0,8, text/x-c
Les priorités de type acceptables sont les suivantes
1) Texte/texte html/x-c
2) texte/x-dvi
3) texte/simple
q est une valeur comprise entre 0 et 1, la valeur par défaut de q est 1, et q = 0 signifie non acceptable
Enfin, les résultats des tests :
| Navigateur | Retour à la mise en page | En-tête de demande d’acceptation | | c’est-à-dire | json | Text/html, application/xhtml+xml, */* | | Chrome | XML | text/html,application/xhtml+xml,application/xml ; q=0,9,image/webp,image/apng,*/* ; q=0,8 | | Firefox | XML | text/html,application/xhtml+xml,application/xml ; q=0,9,*/* ; q=0,8,*/* |
Poursuivez les tests suivants
1. Seul accept :application/json est envoyé, et le résultat est retourné json
2. Seul accept :application/xml est envoyé, et le résultat retourne xml
3. Envoyez accepter : application/xml et application/json en même temps, et le résultat retourne json
4. Envoyez accept :application/json et application/xml en même temps, et le résultat retourne json
5. Modifier la priorité et envoyer application/xml en même temps. q=1.0,application/json ; q=0,9, et le résultat a rendu XML
On peut en déduire :
Le type de données de retour de WebAPI est déterminé par l’acceptation de l’en-tête de requête, et le type de retour par défaut est json 1. Si ni application/json ni application/xml n’existent, retournez les données json 2. Lorsque seule application/json est disponible, retournez les données json 3. Lorsque seule application/xml est disponible, les données xml sont retournées 4. Lorsqu’il y a application/json et application/json en même temps, le type de données retourné est sans importance par rapport à l’ordre des deux ; si les deux ont la même priorité, json est retourné, et si la priorité est différente, le type de priorité la plus élevée est retourné
| Accepte la tête | Type de retour | | 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 |
Comme montré ci-dessous :
|