5

已经使用 servicestack 创建了 REST 服务,并且在发布请求中我以以下方式返回对象

  return new HttpResult(request)
                {
                    StatusCode = HttpStatusCode.Created,

                };

请求:我在数据库中发布的对象

服务堆栈发布请求

当我在提琴手中检查它时,它会在响应正文中呈现服务堆栈的整个 HTML 页面,而不是我只想返回状态代码,所以请告诉我我该怎么做?

谢谢

4

1 回答 1

5

< v3.05 之前的版本中存在一个错误,在某些情况下不尊重 HttpResult ContentType,现在应该使用 NuGet 上的最新版本的 ServiceStack 修复它,或者从以下位置获得:

https://github.com/ServiceStack/ServiceStack/downloads

在此之前,您仍然可以通过更改 HttpClient 上的Accept:application/json请求标头或在 url 的查询字符串上附加?format=json来强制所需的 ContentType。

因此,现在如果您不想序列化任何 DTO,请不要将其添加到 HttpResult:

return new HttpResult() { StatusCode = HttpStatusCode.Created };

请注意,如果在浏览器(或任何接受:text/html 的 Rest 客户端)中调用此服务,您仍然可能会得到一个空的 Html 响应。如果ContentType具有空负载(例如 JSON/JSV),您可以通过在结果中指定它来强制它不会输出任何响应,例如;

return new HttpResult() { 
    StatusCode = HttpStatusCode.Created,
    ContentType = ContentType.Json
};
于 2011-11-16T16:14:53.320 回答