servicestack - 这是在 servicestack 中处理 HEAD 请求的代码吗?

标签 servicestack

使用此引用 - 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/

相关文章:

ServiceStack ORMLite 如何不序列化列表

redis - 获取 Redis 中列条目的总和

c# - 在 Servicestack.OrmLite 中映射字段类型

web-services - ServiceStack过程逻辑分离

c# - 运行时 ServiceStack Redis NuGet 依赖版本错误

asp.net - Redis 抛出异常 "System.OutOfMemoryException"

servicestack - 我将如何更改 ServiceStack 响应 DTO

c# - 如何防止ServiceStack EventLogFactory记录DEBUG事件?

servicestack - ServiceStack 可以在 Linux 的 .net core 上运行吗?

c# - 如何通过文件上传发布简单的 JSON 数据?