2012-10-03 28 views
8

Entiendo que la API WEB utiliza la negociación de contenido para Aceptar - Tipo de contenido para devolver json o xml. Esto no es lo suficientemente bueno y necesito poder decidir pragmáticamente si quiero devolver json o xml.Cómo devolver JSON desde el controlador de MVC WEB API

El Internet está inundado con ejemplos de la utilización de HttpResponseMessage<T> obsoletos, que ya no está presente en MVC 4.

tokenResponse response = new tokenResponse(); 
response.something = "gfhgfh"; 

    if(json) 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response, "application/json"); 
    } 
    else 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response, "application/xml"); 
    } 

¿Cómo se cambia el código anterior para que funcione?

Respuesta

23

Trate de esta manera:

public HttpResponseMessage Get() 
{ 
    tokenResponse response = new tokenResponse(); 
    response.something = "gfhgfh"; 

    if(json) 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response, Configuration.Formatters.JsonFormatter); 
    } 
    else 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, response, Configuration.Formatters.XmlFormatter); 
    }  
} 

o incluso mejor, para evitar que saturan su controlador con dicho código infraestructura de tuberías también se podría escribir un formateador de medios personalizados y llevar a cabo esta prueba en su interior.

+0

Derecho! Mi error fue que el método Get() tenía un tipo de devolución de tokenResponse. ¡Gracias! – user1662812

Cuestiones relacionadas