Zappa(Express JS)-可配置的资产交付路径



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

注:以上内容与

正在尝试创建用于传递资产的可配置路由。

  • https://stackoverflow.com/questions/20407765/node-js-proxy-requests-from-one-path-to-another

IIRC,Express的":parameter"技巧与斜杠不匹配,因此不能用于匹配"路径"。只需构建您自己的regexp即可;o)

"IIRC",因为我觉得我也有同样的问题。但是,"使用来源,卢克",对吧?我猜这个限制的来源(双关语是无意的)可能是的第300行/node_modules/express/lib/utils.js,在函数exports.pathRegexp:中

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

或者可能是307行:

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

哪里明确排除了斜线?

无论如何,路由参数,在这里分配给"key",显然是由(\w+)匹配的。我太懒了,不知道"捕捉"one_answers"星星"是用来做什么的。我想API参考文档有点糟糕,所以你可能想对代码进行逆向工程?

HTH?

最新更新