2012-09-28 11 views
13

¿Cuál es la diferencia al devolver los tipos, p.MVC 4 Web API Acción de devolución: Tipos frente a HttpResponseMessage

public class MyController : ApiController 
    { 
     public IEnumerable<MyType> Get()... 

vs

Volviendo HttpResponseMessage:

public class MyController : ApiController 
    { 
     public HttpResponseMessage Get()... 

??

¿MVC ajusta los tipos en el objeto de contenido HttpResponseMessage de todos modos? El resultado en la página se ve igual, además cuando los formateadores se agregan explícitamente.

¿Cuál es la diferencia para el cliente?

Respuesta

16

No hay diferencia.

Si devuelve el tipo CLR, se envolverá con HttpResponseMessage de todos modos.

La única diferencia es que si devuelve HttpResponseMessage tiene la posibilidad de trabajar directamente con HTTP, por lo que puede establecer encabezados, omitir MediaTypeFormatters y así sucesivamente.

Todo es una cuestión de preferencia personal y/o la actividad que se realiza en su acción.

+0

Gracias. Me di cuenta de eso. Devolver 'HttpResponseMessage' da más flexibilidad con todo tipo de servicios que podrían incluirse en la respuesta. –

+1

En realidad, hay una pequeña diferencia si está utilizando la nueva funcionalidad del generador de páginas de ayuda. En el caso de HttpResponseMessage, no podrá determinar el tipo de devolución, por lo que no generará datos de muestra. Al menos esto es cierto con "ASP.NET Fall 2012 Update BUILD Preview" – mdonatas

+1

@mdonatas HttpResponseMessage parece hacer un muy buen trabajo subvirtiendo la potencia del generador de ayuda. Solía ​​haber un HttpResponseMessage genérico, pero por razones de "seguridad tipo", se eliminó - http://aspnetwebstack.codeplex.com/discussions/355170 – Snixtor

Cuestiones relacionadas