我想在初始匹配后使用nancy规则匹配/捕获所有url段。
例如我想这样做:
有一个网址:/ views / viewname / pageid / visitid / someother
和这样的规则:
Get["/views/{view}/{all other values}"] = parameters =>
{
string view = parameters.view;
List<string> listOfOtherValues = all other parameters..
return ...
};
listOfOtherValues最终会成为:
我也想为查询字符串参数执行此操作。
给出如下的网址:/ views / viewname?pageid = 1&amp; visitid = 34&amp; someother = hello
然后listOfOtherValues将最终成为:
这对南希来说是否可能?
答案 0 :(得分: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;
}
}
有了这个,您可以调用/views/home/abc/def/ghi/?x=1&y=2
之类的URL并获取输出
View: home
abc
def
ghi
x: 1
y: 2
注意: 在{v0.9 +
中支持foreach
over Request.Query