1

使用 ServiceStack 创建 REST 服务时,如何处理任意 HTTP 动词?

最常见的动词有非常简单的方法。例如,要处理 GET 请求,我将执行以下操作:

public class MyService : RestServiceBase<MyRequest>
{
    public override object OnGet(MyRequest request){
        //do stuff and return HttpResult or object for serialization
    }
}

PUT、POST、DELETE 和 PATCH 存在类似的覆盖。

如果我想使用 HEAD 或其他动词怎么办?

(我查看了文档和示例以及其他 ServiceStack 问题,但没有找到任何表明正确方法的内容。)

4

1 回答 1

1

ServiceStack 的RestServiceBase类已经内置了对 GET、POST、PUSH、DELETE 和 PATCH 的支持。所以你只需像你的OnGet()方法一样覆盖它,例如你可以处理 DELETE 请求:

public override object OnDelete(MyRequest request){
    //do stuff and return HttpResult or object for serialization
}

对于 HEAD 请求,您目前无法在 ServiceStack 服务中处理此问题,因此您需要在RequestFilterRequestFitler 属性中处理它(确保关闭 httpRes 以终止请求)。

您还可以通过在 AppHost的EndpointHostConfig.RawHttpHandlers配置中注册自己的自定义 IHttpHandler 来完全绕过 ServiceStack 管道。

于 2012-08-22T21:13:53.187 回答