¿Cómo puedo conseguir que mi página ASP.NET Web Api devuelva JSON en vez de XML usando chrome?

publicado por: Anonymous

Usando el nuevo ASP.NET Web API en Chrome estoy viendo XML.

  • ¿Cómo puedo cambiarlo para que me devuelva JSON para que pueda verlo en mi navegador?.
  • Creo que es solo parte de la cabecera de la petición, ¿estoy en los cierto?

Pregunta original: How do I get ASP.NET Web API to return JSON instead of XML using Chrome?

solución

Ok, esto es como que tuvieras una estantería de vasos de agua, y quisieras berber agua, tus opciones son múltiples.

Yo pienso que lo mejor es que te sujetes a un estandar como respuesta, esto, siguiendo el principio de robustez (ley de Postel):

ser conservador en lo que haces/envías, ser liberal en lo que aceptas de otros.

Fuente 1(Inglés) y Fuente 2 (español)

Partiendo de esto, creo que es recomendable que desde tu API te decidas a enviar un formato y que tu cliente (lo que sea que consuma el API, lo pueda manejar). Si quieres enviar multiples formatos, está bien, pero le informas a tu cliente el cuál a través de los headers te dirá qué versión de la respuesta acepta, tal como dijo JosEduSol.

Las otras maneras que puedes lograrlo son las siguientes:

Agregando la respuesta JSON por defecto.
Agrega lo siguiente al WebApiConfig.cs

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));

Removiendo la respuesta XML.
Esta es mi forma preferida de hacerlo

config.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

Luego puedes jugar con el JSON que retornas, como decidir si será CamelCase, o si estará identado, por ejemplo:

config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

Nota: la ley de Postel es más aplicable al contenido que retornas y no a su formato, es decir, si retornas un animal, siempre retorna un animal, no un arreglo de animales, y mucho menos una persona, aunque yo entiendo que es bueno ser explícito con los formatos que tu aplicación retorna, así tu cliente sabrá qué esperar exactamente.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *