2013-02-27 35 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