2013-02-27 33 views
2

我正在实现一个RESTful服务,这个服务将被Dojo框架的RestStore所使用,这将允许将服务绑定到各种小部件,比如交互式网格或类型超前的ajax选择。需要HTTP标头的REST服务的推荐模式?

RestStore想要发送和接收HTTP RangeContent-Range标题,以便将查询的结果限制为特定的子范围。

什么是ServiceStack(新API)中作为服务的一部分对HTTP头作出反应的最佳实践模式?通常,像Get这样的服务方法不能访问HTTP头,除非我错过了一个备用API。

,我看到的当前方法是执行像

public class RangeSupporter : Attribute, IHasRequestFilter, IHasResponseFilter 

一个属性,其将解析请求上的标头,和写入响应的标头。 DTO将被标记为这个过滤器。

过滤器将传递值,比如说'First'和'Last'进出DTO。但是,要知道,DTO甚至有这样的属性,就必须有像

interface IHasRangeSupport { 
    int First { set; get; } 
    int Last { set; get; } 
    int Total { set; get; } 
} 

一些标记接口,使得过滤器可以将信息传输进出DTO的类似代码:

var r = request as IHasRangeSupport; 
    if (r != null) { 
     /// Access the DTO attributes for the range parameters 
    } 

这似乎是很多仪式,而且很尴尬的实现。

实现REST服务时,是否有更好的访问HTTP标头的模式?

在我的特殊用例中,不需要支持非REST端点(如SOAP)。只有HTTP端点很重要。

回答

2

什么是ServiceStack(新API)的最佳实践模式,作为服务的一部分对HTTP头作出反应?

我相信你能得到头在你的服务类...

public class FooService : Service 
{ 
    public object Get(Foo reqeust) 
    { 
     //get header 
     var h1 = base.RequestContext.GetHeader("headerName"); 
     //get header differently 
     var h2 = base.Request.Headers.Get("headerName"); 
    } 
} 
+0

啊,没有的示例代码只见表明 - 将是非常,非常有帮助! – SAJ14SAJ 2013-02-27 17:35:41

+0

很高兴帮助。如果此答案确实解决了您的问题,请将其标记为“接受答案”,以便其他人也可以找到解决方案。 – paaschpa 2013-02-27 17:59:32

+0

我会一旦我测试过 - 注意我的代表跨网站:-)我知道如何玩游戏:-) – SAJ14SAJ 2013-02-27 18:04:13