ServiceStack を使用して API サンプルを実装し始めたばかりで、多くの例を調べました。サービスから HttpResult を返す例もあれば、ResponseDTO を返す例もあります。どちらが優先されますか?
1825 次
1 に答える
6
応答 DTO のみを返すことをお勧めします。これは基本的に、デフォルトの動作に満足していることを意味し、サービスは要求されたコンテンツ タイプにシリアル化された応答本文をそのまま返します。
HttpResult は、サービスが応答に加えて追加の HTTP カスタマイズを追加する必要がある場合 (追加の HTTP ヘッダーなど) に使用されますが、HTTP 応答本文のワイヤ形式は変更されません (Content-Type を変更しない限り)。応答のシリアライズ先を変更します)。
HttpResult は Response をカスタマイズする 1 つの方法にすぎませんが、他にもいくつかあります。
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);
}
}
詳細については、HTTP 応答のカスタマイズwiki を参照してください。
于 2013-10-19T16:12:15.217 に答える