以前は、新しい API が戻り値の型しかサポートしていなかったという制限がありましたが、新しい API wiki ページobject
のすべての例が厳密に型指定された応答を使用するようになったため、しばらくの間はそうではありませんでした。
オブジェクトの戻り値の型を返したい理由の 1 つは、HttpResult 内で応答を装飾したい場合です。
public object Post(Movie movie)
{
var isNew = movie.Id == null;
Db.Save(movie); //Inserts or Updates
var movie = new MovieResponse {
Movie = Db.Id<Movie>(newMovieId),
};
if (!isNew) return movie;
//Decorate the response if it was created
return new HttpResult(movie) {
StatusCode = HttpStatusCode.Created,
Headers = {
{ HttpHeaders.Location, Request.AbsoluteUri.CombineWith(movieId) }
}
};
}
リクエストに基づいて異なるレスポンスを返したい場合にも便利です (ただし、これはお勧めしません)。
public object Get(FindMovies request)
{
if (request.Id != null)
return Db.Id<Movie>(movie.Id);
return Db.Select<Movie>();
}
を返すことを選択した場合は、要求 DTO をマーカーobject
で装飾して、サービスの期待される応答がどうあるべきかServiceStack にヒントを与えることを強くお勧めします。IReturn<T>