【问题标题】:Zappa ( Express JS ) - Configurable Path to Deliver AssetsZappa ( Express JS ) - 交付资产的可配置路径
【发布时间】:2013-12-05 19:59:01
【问题描述】:

我需要响应 http get 请求以提供资产。我需要帮助来编写符合以下描述的路线。

路径信息

  • 有一个可配置的前缀(basePath
  • 有一个段映射到公用文件夹中的真实文件 (path)
  • 表格:[basePath]/[path]

例如:

http://localhost:3000/app/collage/components/bootstrap/dist/css/bootstrap.min.css
basePath = '/app/collage' # set through CLI arguments when app loads
path = '/components/bootstrap/dist/css/bootstrap.min.css' # Comes from route

我需要什么:

我需要编写一个 get 方法来响应上述类型的 URL,读取文件并将其发送给用户。以下显然不起作用,但我想现在你知道我要什么了。

@get "#{settings.basePath}/:path", (req, res) ->
  res.sendFile __dirname + "public" + req.params.path

注意:以上与

有关

正在尝试创建用于交付资产的可配置路线。

【问题讨论】:

    标签: node.js routes zappa


    【解决方案1】:

    IIRC,Express 的 ":parameter" 技巧不匹配斜线,因此不能用于匹配“路径”。只需构建自己的正则表达式即可。 ;o)

    “IIRC”,因为我认为我遇到了同样的问题。但是,“使用来源,卢克”,对吗?我猜这个限制的来源(双关语意外)可能是函数exports.pathRegexp中./node_modules/express/lib/utils.js的第300行:

    .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?(\*)?/g, function(_, slash, format, key, capture, optional, star){
    

    或者可能是第 307 行:

    (format && '([^/.]+?)' || '([^/]+?)')
    

    在哪里明确排除斜线?

    无论如何,这里分配给“key”的路由参数显然是由(\w+)匹配的。我懒得弄清楚“捕获”和“明星”是用来做什么的。我猜 API ref doc 有点烂,所以也许你想对代码进行逆向工程?

    HTH?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 2017-01-04
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多