使用此引用 - https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters
现在,在我当前的实现中,任何传入的 HEAD 请求都会收到 404 状态码。我想返回 200 作为 HEAD 请求的状态码,因此客户端将进一步发出 GET 请求以获得实际输出。
显然我下面的代码在 AppHost 中是错误的,仍然返回 404,请纠正我。
this.RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
});
this.ResponseFilters.Add((req, res, dto) =>
{
if (req.HttpMethod == "HEAD") res.StatusCode = 200;
});
问题 2:对于 AppHost 中定义的所有路由,这种单一代码实现是否足够。
Routes.Add<dto1>("/GetMethod1", "GET");
Routes.Add<dto1>("/GetMethod1/Id/{ID}", "GET");
Routes.Add<dto2>("/GetMethod2", "GET");
Routes.Add<dto2>("/GetMethod2/Id/{ID}", "GET");
谢谢
最佳答案
看来您使用的是旧版本的 ServiceStack,所以我首先建议您升级到最新版本。
除此之外,处理 HEAD 或其他不常见的 HTTP 方法请求的理想方式是使用 ServiceStack's new and more flexible API ,例如:
public void Head(GetMethod request) {
base.Response.StatusCode = 200;
}
但是只要有现有的实现就足够了,所以你可以有一个空的主体。即设置 200
StatusCode 是多余的,因为它是默认状态代码。
如果您想使用过滤器来处理它,那么您会希望尽可能早地在请求管道中处理它。参见 ServiceStack's Order of Operations用于执行用户定义的事件和过滤器的顺序。
关于servicestack - 这是在 servicestack 中处理 HEAD 请求的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13620111/