Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 24777|Respuesta: 3

[WebAPI] WebAPI personaliza el formato de los datos de retorno

[Copiar enlace]
Publicado en 30/11/2017 11:00:16 | | | |
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:

ExploradorVolver al formato  Cabecera de aceptar solicitud
esJSONTexto/HTML, Aplicación/XHTML+XML, */*
ChromeXMLtext/html,application/xhtml+xml,application/xml; q=0.9,imagen/webp,imagen/apng,*/*; q=0,8
FirefoxXMLtext/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 cabezaTipo de retorno
Application/JSONJSON
Aplicación/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


Como se muestra a continuación:





Anterior:Python3 implementa tablas de particionamiento horizontal de acceso concurrente
Próximo:.Net MVC implementa sondeos largos
Publicado en 30/11/2017 11:06:08 |
Es increíble, ya me había encontrado en esta situación antes, pero no pensaba por qué
 Propietario| Publicado en 30/11/2017 11:07:36 |
QWERTYU Publicado el 30-11-2017 11:06
Es increíble, ya me había encontrado en esta situación antes, pero no pensaba por qué

Se recomienda desalentar la devolución del formato XML porque, en algunos casos, el formato JSON devuelto es normal y el formato XML que devuelve el formato lanza una excepción

Por ejemplo, si el valor de retorno es objeto, el formato JSON de retorno es normal, y el formato XML de retorno informará de un error
Publicado en 25/4/2018 8:50:44 |
La conferencia es muy detallada, y hay puntos de conocimiento, gracias, ya se ha recopilado
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com