我想要在初始匹配后匹配/捕获所有 url 段的 nancy 规则。
例如,我想这样做:
有一个网址,如:/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&visitid=34&someother=hello
那么 listOfOtherValues 最终会是:
南希甚至有可能做到这一点吗?
最佳答案
对于第一个问题,您可以使用正则表达式和简单名称来定义捕获组。所以你只需定义一个catch all 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
v0.9+ 支持超过 Request.Query
关于nancy - 在与 Nancy 初始匹配后捕获所有 url 段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7919835/