【问题标题】:How to set up a route that matches any path by file extension如何设置与文件扩展名匹配的任何路径的路由
【发布时间】:2020-04-16 13:58:31
【问题描述】:

我希望 NancyFX 中的路由匹配 jpg 路径,而不管路径段的数量。例如,它应该匹配所有:

  • /image.jpg
  • /foo/image.jpg
  • /foo/bar/baz/foo/baz.jpg

这可能吗?似乎我为 NancyFX 找到的所有通配符选项都是针对特定路径段的,并且不允许多个段(其中段是由“/”分隔的部分)。

这似乎应该是可能的,因为静态内容服务器需要能够做到这一点。

【问题讨论】:

    标签: nancy


    【解决方案1】:
    public MyModule : NancyModule
    {
        public MyModule()
        {
            Get[@"^(?<path>.*\.jpg)$"] = p => 
            {
                string path = p.path;
            }
        }
    }
    

    结果(路径值):

    • image.jpg
    • foo/image.jpg
    • foo/bar/baz/foo/baz.jpg

    【讨论】:

      【解决方案2】:

      Nancy 支持路由中的正则表达式。您可以使用正则表达式匹配到.jpg 图像的所有路由,并捕获图像的路径和名称:

      public MyModule : NancyModule
      {
          public MyModule()
          {
              Get[@"(?<imagepath>.*)/(?<imagename>.*.jpg)"] = 
                  params => 
                  {
                      string path = params.imagepath;
                      string name = params.imagename;
                      return DoStuff(path, name);
                  }
          }
      }
      

      【讨论】:

      • 我们可以使用@"(.*.jpg)" 作为任何图像路径吗?喜欢/foo/bar/baz/foo/baz.jpg
      • 这不适用于/foo/bar/baz/foo/baz.jpg
      猜你喜欢
      • 1970-01-01
      • 2014-09-03
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2020-08-12
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多