2013-10-19 17 views

risposta

6

Restituire solo la risposta DTO è preferibile, in pratica significa che si è soddisfatti del comportamento predefinito e il servizio restituirà il corpo della risposta così com'è, serializzato nel tipo di contenuto richiesto.

HttpResult si riferisce a quando il servizio deve aggiungere ulteriori personalizzazioni HTTP oltre alla risposta (ad esempio intestazioni HTTP aggiuntive), ma non modifica il formato filo del corpo della risposta HTTP (a meno che non si modifichi il contenuto -Tipo che cambierà la serializzazione della risposta).

Anche se il HttpResult è solo un modo per personalizzare la risposta, qui ci sono pochi altri:

public class HelloService : Service 
{ 
    public object Get(Hello request) 
    { 
     //1. Returning a custom Response Status and Description with Response DTO body: 
     var responseDto = ...; 
     return new HttpResult(responseDto, HttpStatusCode.Conflict) { 
      StatusDescription = "Computer says no", 
     }; 

     //2. Throw or return a HttpError: 
     throw new HttpError(System.Net.HttpStatusCode.Conflict, "SomeErrorCode"); 

     //3. Modify the Request's IHttpResponse 
     base.Response.StatusCode = (int)HttpStatusCode.Redirect; 
     base.Response.AddHeader("Location", "http://path/to/new/uri"); 
    } 

    //4. Using a Request or Response Filter 
    [AddHeader(ContentType = "text/plain")] 
    public string Get(Hello request) 
    { 
     return "Hello, {0}!".Fmt(request.Name); 
    } 
} 

Vedi l'Customize HTTP Responses wiki per maggiori informazioni.

+0

Grazie per la risposta rapida –