Recentemente, ao usar WebAPI, o navegador acessa a WebAPI, e o padrão é o formato XML; acho que esse formato de dados deveria ser personalizável pelo usuário, permitindo que o servidor retorne formato XML ou JSON, em vez de configurar código do servidor!
Embora o código do servidor possa ser configurado, não acho que essa fosse a intenção original da WebAPI.
1. Qual tipo de dado a WebAPI retorna por padrão, json ou xml? 2. Como modificar o tipo de dado de retorno da WebAPI Uso o navegador IE para solicitar que os dados retornados estejam em formato JSON, e que o formato retornado pelo Firefox e Chrome seja XML, e então uso o HttpWebRequest para solicitar que o retorno seja em formato JSON, fiquei me perguntando, por que o mesmo programa, o mesmo arquivo de configuração, por que o formato de dados de saída é diferente, mesmo que seu JSON ou XML padrão de saída possa ser entendido, por que existem navegadores diferentes, o formato de saída é diferente, Depois de pesquisar um pouco, finalmente descobri o motivo
Após testes, foi constatado que os dados retornados pelo navegador IE são json, enquanto o uso do Firefox e Chrome é xml, e constatou-se que o IE não possui o tipo "application/xml" em comparação com Firefox e Chrome quando ocorrem requisições http. Assim, o padrão é o formato json data, enquanto Firefox e Chrome enviam tipos de xml aceitáveis, então os dados xml são retornados, e a seguir está o cabeçalho de requisição do IE, Firefox e Chrome
Aceitar só aparece em Solicitações
O que significa: O tipo de mídia aceitável no navegador
Por exemplo, Aceitar: texto/html significa que o navegador pode aceitar o tipo de retorno do servidor como texto/html, que é comumente chamado de documentos html
Se o servidor não conseguir devolver dados do tipo text/html, o servidor deve devolver um erro 406 (inaceitável)
Coringa * representa qualquer tipo
Por exemplo, Aceitar: */* significa que o navegador pode lidar com todos os tipos (geralmente o navegador envia isso para o servidor)
Por exemplo, Aceitar: text/* significa que todas as subclasses de texto são aceitáveis
Aceitar pode suportar múltiplos tipos de separações
Por exemplo, Aceitar: áudio/*; Q=0.2, áudio/básico indica que navegadores preferem tipos de áudio/mídia básica, mas se não tiverem esse tipo, outros tipos de áudio também podem ser usados
Aqui aparece um q=0,2, que é um valor que representa o grau de associação, e o valor padrão é um, organizado do maior ao menor
Por exemplo, Aceitar: texto/plano; Q=0.5, texto/html, texto/x-dvi; q=0,8, texto/x-c
As prioridades de tipo aceitáveis são as seguintes
1) texto/texto html/x-c
2) texto/x-dvi
3) texto/simples
q é um valor entre 0 e 1, o valor padrão de q é 1, e q=0 significa inaceitável
Por fim, os resultados dos testes:
| Navegador | Voltar à formatação | Cabeçalho de aceitar pedido | | ou | JSON | Texto/html, Application/XHTML+XML, */* | | Chrome | XML | texto/html,application/xhtml+xml,application/xml; q=0,9,imagem/webp,imagem/apng,*/*; q=0,8 | | Firefox | XML | texto/html,application/xhtml+xml,application/xml; q=0,9,*/*; q=0,8,*/* |
Continue com os seguintes testes
1. Apenas aceitar:application/json é enviado, e o resultado é retornado json
2. Apenas aceitar:application/xml é enviado, e o resultado retorna xml
3. Envie aceitar: application/xml e application/json ao mesmo tempo, e o resultado retorna json
4. Envie aceitar:application/json e application/xml ao mesmo tempo, e o resultado retorna json
5. Modificar a prioridade e enviar a aplicação/xml ao mesmo tempo. q=1.0,application/json; q=0,9, e o resultado retornou xml
A partir disso, pode-se concluir:
O tipo de retorno do WebAPI é determinado pela aceitação do cabeçalho da requisição, e o tipo padrão de retorno é json 1. Se nem application/json nem application/xml existirem, retorne os dados json 2. Quando apenas application/json estiver disponível, retorne os dados json 3. Quando apenas application/xml está disponível, os dados xml são retornados 4. Quando há application/json e application/json ao mesmo tempo, o tipo de dado retornado é irrelevante para a ordem dos dois; se os dois tiverem a mesma prioridade, json é retornado; e se a prioridade for diferente, o tipo com prioridade maior é retornado
| Aceitar a cabeça | Tipo de retorno | | 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 |
Como mostrado abaixo:
|