nancy - 在与 Nancy 初始匹配后捕获所有 url 段

标签 nancy

我想要在初始匹配后匹配/捕获所有 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 最终会是:
  • pageid
  • 访问ID
  • 别人

  • 我也想对查询字符串参数执行此操作。

    给定一个网址,如:/views/viewname?pageid=1&visitid=34&someother=hello

    那么 listOfOtherValues 最终会是:
  • 1
  • 34
  • 你好

  • 南希甚至有可能做到这一点吗?

    最佳答案

    对于第一个问题,您可以使用正则表达式和简单名称来定义捕获组。所以你只需定义一个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: homeabcdefghix: 1y: 2
    笔记:foreach v0.9+ 支持超过 Request.Query

    关于nancy - 在与 Nancy 初始匹配后捕获所有 url 段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7919835/

    相关文章:

    razor - Nancy.ViewEngines.Razor v0.12.1.0 是否支持布局 View 和 _ViewStart?

    c# - 未调用自定义 Nancy Bootstrap

    c# - ASP.NET MVC 应用程序的自托管

    asp.net - 无法将 HttpHandler 映射到 "path/*"通配符映射

    nancy - 如何修复使用 Nancy FX 自托管时出现的 AutomaticUrlReservationCreationFailureException

    c# - nancyfx - 从父文件夹提供静态文件

    c# - 使用 HttpClient 的异步 NancyFX - fbcdn 的 GetAsync 返回 403 禁止?

    linux - NancyFX 在 Linux Mono 上一段时间后停止处理来自多个客户端的请求

    testing - 从测试中向 Nancy 模块发送参数

    c# - 不完整的视频流式传输到移动浏览器 - HTTP header