当使用与express中的静态文件相同的url时,app.get回调函数不会触发

时间:2016-03-03 00:50:09

标签: node.js express

我的服务器正在托管静态图片,我可以在浏览器中访问它

例如:http://localhost:3000/media/foo.png

但是当我尝试使用一些额外的查询参数获取图像时,例如 http://localhost:3000/media/foo.png?var1=1&var2=2,它永远不会进入app.get('/ media')的回调函数,它使用与express.static相同的url。我想知道我的路由通配符映射是否错误?或者我只是无法使用相同名称的静态URL设置get方法?如何解决这个问题。

var express = require('express');
app.use('/media', express.static('libs'));
app.get('/media/*', function(req, res) {
  console.log('trigger');
});

1 个答案:

答案 0 :(得分:0)

您需要在get:media之前声明use:static并检查查询参数:

app.get('/media/*', function(req, res, next) {
  if (Object.keys(req.query).length===2) {
    // do something
    console.log(req.query)
    res.end('Well, there are query parameters in the URL...')
  } else {
    next() // Ok, try static
  }
})

app.use('/media', express.static('libs'))