Zappa(Express JS) - 提供资产的可配置路径

时间:2013-12-05 19:59:01

标签: node.js routes zappa

我需要响应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

注意:以上内容与

有关

尝试创建可配置的路由以提供资产。

1 个答案:

答案 0 :(得分:0)

IIRC,Express的“:参数”技巧与斜杠不匹配,因此不能用于匹配“路径”。只需构建自己的正则表达式。 ; O)

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

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

或者也许是第307行:

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

哪里明确排除了斜杠?

无论如何,此处指定为“key”的路由参数显然与(\ w +)匹配。我懒得弄清楚“捕捉”和“明星”是用来做什么的。我想,API参考资料很糟糕,所以也许你想对代码进行逆向工程?

HTH?