2012-09-28 13 views
13

Qual è la differenza restituendo i tipi, ad es.MVC 4 Web API Restituzione azione: Tipi vs HttpResponseMessage

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

vs

Tornando HttpResponseMessage:

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

??

MVC esegue il wrapping dei tipi nell'oggetto di contenuto HttpResponseMessage? Il risultato sulla pagina è uguale a quando i formattatori sono esplicitamente aggiunti.

Qual è la differenza per il cliente?

risposta

16

Non c'è differenza.

Se si restituisce il tipo CLR, verrà comunque completato con HttpResponseMessage.

L'unica differenza è che se si restituisce HttpResponseMessage si ha la possibilità di lavorare direttamente con HTTP - in modo da poter impostare le intestazioni, ignorare MediaTypeFormatters e così via.

È tutta una questione di preferenza personale e/o dell'attività svolta nella vostra azione.

+0

Grazie. L'ho capito. Restituire 'HttpResponseMessage' offre maggiore flessibilità con tutti i tipi di servizi che potrebbero essere inclusi nella risposta. –

+1

In realtà c'è una piccola differenza se si utilizza la nuova funzionalità del generatore di pagine di aiuto. Nel caso di HttpResponseMessage non sarà in grado di determinare il tipo di ritorno, quindi non genererà dati di esempio. Almeno questo è vero con "ASP.NET Fall 2012 Aggiornamento BUILD Anteprima" – mdonatas

+1

@mdonatas HttpResponseMessage sembra fare un ottimo lavoro di sovvertire la potenza del generatore di aiuto. C'era un HttpResponseMessage generico, ma per ragioni di "tipo sicurezza", è stato rimosso - http://aspnetwebstack.codeplex.com/discussions/355170 – Snixtor

Problemi correlati