2013-01-02 38 views
1

剛剛發現ServiceStack上個月,我真的很喜歡這個偉大的框架工作。真的厭倦了WCF設置和靜態方法原型!ServiceStack:路線和參數

我有問題!

我創建了一個類:事件,允許使用顯示下列途徑事件的一個或一個列表:

[Route("/events")] 
[Route("/events/{Id}")] 
public class Event 
{ 
    public ushort Id { get; set; } 
    public string FromDate { get; set; } 
    public string ToDate { get; set; } 
} 

,但我也想列出使用一種相同航線2個日期之間的事件。 其實路線只需要Id作爲參數,但我想添加另一個路線指定FromDate: 我認爲這樣的事情會工作:/ events/01-01-2012/10-01-2012 爲了獲得所有事件之間2日期,但它不起作用。

是否可以定義允許根據不同參數定義不同路線的路線(取自DTO)?

我是管理路線的新手,很想知道如何根據不同的參數定義不同的過濾方式。

感謝您的幫助!令人敬畏的工作Demis!

+2

你應該考慮使用查詢字符串參數。保持簡單的路線是一種好的做法。這個查詢已經可以在ServiceStack中使用,你的代碼位於/ events?fromdate = 01-01-2012&todate = 10-01-2012 – kampsj

+0

是的,因爲@kampsj說使用QueryString是IMO的首選,並且已經不適用與這些路線的箱子。但是,如果你想要,你可以添加'[Route(「/ events/{FromDate}/{ToDate}」)]'並使用三部分路徑信息來調用它。 – mythz

回答

5

[Route("/events/from/{FromDate}/to/{ToDate}")]怎麼樣?

雖然我現在的思維方式將它們分成兩個請求

[Route("/events/{Id}")] 
public class GetEventById 
{ 
    public ushort Id { get; set; } 
} 

[Route("/events/between/{FromDate}/{ToDate}")] 
public class GetEventsBetweenDates 
{ 
    public string FromDate { get; set; } 
    public string ToDate { get; set; } 
} 
0

在我使用onGET()函數,我想確定閹一個參數設置爲空或不是。 當我添加'?'除了請求數據類型,我在嘗試訪問我的服務時遇到了「不良請求」異常。

這是否意味着所有REQUEST參數對於字符串都是空的,對於數字是0,對於日期等是01-01-000並且這是我應該在我的OnGet上測試以確定輸入Querystring參數的值?

+0

找到了樣品的答案。使用'?'對一些請求參數和測試值使用'.HasValue' - >它的工作原理!謝謝 – kilroyFR