Recientemente, al usar WebAPI, el navegador accede a WebAPI, y el formato por defecto es XML; creo que este formato de datos devuelto debería ser personalizable por el usuario, permitiendo al servidor devolver formato XML o JSON, en lugar de configurar el código del servidor.
Aunque el código del servidor se puede configurar, no creo que esa fuera la intención original de WebAPI.
1. ¿Qué tipo de dato devuelve WebAPI por defecto, json o xml? 2. Cómo modificar el tipo de datos de retorno de WebAPI Uso el navegador IE para solicitar que los datos devueltos estén en formato JSON, y que el formato de datos devuelto por Firefox y Chrome sea XML, y luego uso HttpWebRequest para solicitar que el retorno sea en formato JSON, me pregunté por qué el mismo programa, el mismo archivo de configuración, por qué el formato de datos de salida es diferente, aunque se entienda tu salida predeterminada en json o xml, por qué hay navegadores diferentes, el formato de salida es distinto, Tras investigar un poco, por fin descubrí la razón
Tras las pruebas, se descubrió que los datos devueltos al usar el navegador IE son json, mientras que usar Firefox y Chrome es xml, y se descubrió que IE carece del tipo "application/xml" en comparación con Firefox y Chrome cuando se producen solicitudes http. Así que el formato predeterminado es los datos en formato json, mientras que Firefox y Chrome envían tipos XML aceptables, por lo que se devuelven los datos xml, y lo siguiente es el encabezado de solicitud de IE, Firefox y Chrome
Aceptar solo aparece en las Solicitudes
Qué significa: El tipo de medio que es aceptable en el navegador
Por ejemplo, Aceptar: texto/html significa que el navegador puede aceptar el tipo de devolución postal del servidor como texto/html, lo que comúnmente se denomina documentos html
Si el servidor no puede devolver datos de tipo text/html, debería devolver un error 406 (no aceptable)
El comodín * representa cualquier tipo
Por ejemplo, Aceptar: */* significa que el navegador puede manejar todo tipo de personas (generalmente el navegador envía esto al servidor)
Por ejemplo, Aceptar: text/* significa que todas las subclases de texto son aceptables
Accept puede soportar varios tipos de separaciones
Por ejemplo, Aceptar: audio/*; P=0.2, Audio/Básico significa que los navegadores prefieren tipos de audio/medios básicos, pero si no tienen este tipo, también se pueden usar otros tipos de audio
Aquí aparece un q=0,2, que es un valor que representa el grado de asociación, y el valor por defecto es uno, ordenado de mayor a menor
Por ejemplo, Aceptar: texto/plano; q=0.5, texto/html, texto/x-dvi; q=0.8, texto/x-c
Las prioridades de tipo aceptables son las siguientes
1) texto/texto html/x-c
2) texto/x-dvi
3) texto/plano
q es un valor entre 0 y 1, el valor por defecto de q es 1, y q=0 significa que no es aceptable
Por último, los resultados de la prueba:
| Explorador | Volver al formato | Cabecera de aceptar solicitud | | es | JSON | Texto/HTML, Aplicación/XHTML+XML, */* | | Chrome | XML | text/html,application/xhtml+xml,application/xml; q=0.9,imagen/webp,imagen/apng,*/*; q=0,8 | | Firefox | XML | text/html,application/xhtml+xml,application/xml; q=0,9,*/*; q=0.8,*/* |
Continúa con las siguientes pruebas
1. Solo se envía acept:application/json y el resultado se devuelve json
2. Solo se envía acept:application/xml, y el resultado devuelve xml
3. Enviar aceptar: application/xml y application/json al mismo tiempo, y el resultado devuelve json
4. Envía acept:application/json y application/xml al mismo tiempo, y el resultado devuelve json
5. Modificar la prioridad y enviar aplicación/xml al mismo tiempo. q=1.0,application/json; q=0,9, y el resultado devolvió XML
De esto se puede concluir:
El tipo de devolución de WebAPI se determina mediante la aceptación del encabezado de la solicitud, y el tipo de retorno por defecto es json 1. Si no existen ni application/json ni application/xml, devuelva los datos json 2. Cuando solo hay disponible/aplicación/json, devuelve los datos json 3. Cuando solo hay aplicación/xml disponible, se devuelve los datos xml 4. Cuando hay application/json y application/json al mismo tiempo, el tipo de dato devuelto es irrelevante para el orden de ambos; si ambos tienen la misma prioridad, se devuelve json, y si la prioridad es diferente, se devuelve el tipo con mayor prioridad
| Acepta la cabeza | Tipo de retorno | | Application/JSON | JSON | | Aplicación/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 se muestra a continuación:
|