gpt4 book ai didi

servicestack - 为什么ServiceStack的New API提升 "object"返回类型而不是更强类型的返回类型?

转载 作者:行者123 更新时间:2023-12-04 04:06:23 25 4
gpt4 key购买 nike

例如,如果我具有通过IReturn<T>链接的标准请求和响应DTO,请参见以下各种在线示例(例如this one,尽管并非始终如此),具有以下服务方法签名的原因是什么:

public object Get(DTO.MyRequest request)

而不是:
public IList<DTO.MyResponse> Get(DTO.MyRequest request)

这里的 object返回类型是否仅仅是为了支持服务功能,例如对输出流进行gzip压缩,从而导致输出为字节数组?似乎我希望从这些所谓的“操作”调用中获得适当的更强返回类型,除非我缺少一些常见的场景或用例。

最佳答案

New API仅支持object返回类型曾经是一个限制,但是一段时间以来,情况并非如此,因为New API wiki page上的所有示例现在都使用强类型的响应。

您可能想返回对象返回类型的原因之一是,如果您想装饰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,则我强烈建议您使用 IReturn<T>标记将您的Request DTO装饰为 give a hint to ServiceStack服务的预期响应。

关于servicestack - 为什么ServiceStack的New API提升 "object"返回类型而不是更强类型的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com