2011-10-27 76 views
4

我想要在初始匹配後匹配/捕獲所有url片段的nancy規則。在與Nancy初次匹配後捕獲所有網址片段

比如我想做到這一點:

有一個網址,如:/視圖/視圖名/的pageid/visitid /一些其它

像這樣的規則:

Get["/views/{view}/{all other values}"] = parameters => 
{ 
    string view = parameters.view; 

    List<string> listOfOtherValues = all other parameters.. 

    return ... 
}; 

listOfOtherValues將最終成爲:

  • pageid
  • visitid
  • 一些其它

我也想爲查詢字符串參數做到這一點。

給出的一個url等:/視圖/視圖名的pageid = 1 & visitid = 34 &一些其它=你好

然後listOfOtherValues將結束是:

  • 你好

這是甚至可能與南希?

回答

4

對於第一個問題,您可以使用正則表達式以及簡單名稱來定義捕獲組。因此,您只需定義一個捕獲所有RegEx。
對於你來說,你只需要枚舉Request.Query字典。

下面是一些在單個路由中演示的代碼。

public class CustomModule : NancyModule 
{ 
    public CustomModule() { 
     Get["/views/{view}/(?<all>.*)"] = Render; 
    } 

    private Response Render(dynamic parameters) { 
     String result = "View: " + parameters.view + "<br/>"; 
     foreach (var other in ((string)parameters.all).Split('/')) 
      result += other + "<br/>"; 

     foreach (var name in Request.Query) 
      result += name + ": " + Request.Query[name] + "<br/>"; 

     return result; 
    } 
} 

有了這個地方,你可以把這種URL作爲/views/home/abc/def/ghi/?x=1&y=2並獲得輸出 View: home
abc
def
ghi
x: 1
y: 2

注: 的foreach over Request.Query支持v0.9 +

+0

在第一個示例中,爲什麼我無法匹配/views/home/1.2之類的內容 –