过去,New API 仅支持object
返回类型是一个限制,但一段时间以来,New API wiki 页面上的所有示例现在都使用强类型响应。
您可能希望返回对象返回类型的原因之一是,如果您想在 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>();
}
如果您确实选择返回,我强烈建议您使用标记object
装饰您的请求 DTO,以向 ServiceStack 提示服务的预期响应应该是什么。IReturn<T>