2012-08-09 6 views
9

He escrito dos aplicaciones ASP.NET Web API esta semana, que contienen un solo controlador simple; He modificado cada uno para hacer que funcionen, incluir excepciones, etc. pero están configurados casi de la misma forma que yo puedo ver.¿Cómo especifico si quiero JSON o XML en ASP.NET Web API?

Uno de estos devuelve JSON y el otro devuelve XML. ¡Quiero que ambos devuelvan JSON!

He buscado alguna configuración que pueda controlar este comportamiento pero no estoy contento. ¿Dónde está la configuración que controla el tipo de serialización utilizado por ASP.NET Web API?

Respuesta

10

Se define por lo que el cliente que llama (por ejemplo, el navegador o el cliente de .NET) pasa en la cabecera Accept:

Accept: application/json, application/xml, texto/JSON, texto/xml

tendrá una preferencia por JSON (si es posible)

Así que su cliente que devuelve XML necesario para establecer la cabecera Accept ser el de arriba o simplemente

Accept: application/json

debe hacer el truco

2

Para restringir la salida a un solo formateador, tratan las instrucciones aquí:

http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#removing_the_json_or_xml_formatter

En una nota relacionada, El siguiente enlace cubre cómo ASP.NET Web API decide qué formato de salida usar dependiendo de la solicitud HTTP que se le envíe, es decir, cómo elige JSON sobre XML:

http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation

Puede ser útil si quieres todavía apoyar ambos formatos, pero hay que asegurarse de que su propio código de cliente siempre recibe JSON.