Bir API örneği uygulamak için birçok ServiceStack'i kullanmaya başladım ve birçok örneği inceledim, bazı örnekler HttpResult'u hizmetten döndürüyor ve diğerleri de tercih edilen ResponseDTO'yu döndürüyor mu?Servis Yığını - İade HttpResult veya ResponseDTO
5
A
cevap
6
Yalnızca Yanıt DTO'yu döndürmek, temel olarak varsayılan davranıştan memnun olduğunuz anlamına gelir ve hizmetiniz yanıt gövdesini istediği İçerik Türü'ne serileştirildiği şekilde döndürecektir.
HttpResult, Hizmetinizin Yanıt'a ek olarak ek HTTP özelleştirmeleri eklemesi gerektiğinde geçerlidir (örn. Ek HTTP Üstbilgileri) - ancak HTTP Yanıt gövdesinin tel formatını değiştirmez (İçeriği değiştirmezseniz) - Yanıtın serileştirildiğini değiştirecek tür). HttpResult Yanıtı özelleştirmek için sadece bir yolu olmasına rağmen
, burada birkaç diğerleri:
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);
}
}
fazla bilgi için Customize HTTP Responses yazısını okuyun.
Hızlı yanıt için teşekkürler –